Индусский код в phpBB3 — ошибка при установке и её устранение

PhpBB3 очень популярный движок для форума. Его команда, видимо состоит из разработчиков. Бывает и они ошибаются. Например у меня, при установке вывалилось следующее:

Fatal error: Cannot redeclare phpbb_realpath()

Проблема решается быстро но удивляет причина появления такой ошибки.Если честно, описанный ниже прием я вижу впервые. В файле functions.php (строка 1057)  мы находим такой код:

if (!function_exists('realpath'))
{
	/**
	* A wrapper for realpath
	* @ignore
	*/
	function phpbb_realpath($path)
	{
		return phpbb_own_realpath($path);
	}
}
else
{
	/**
	* A wrapper for realpath
	*/
	function phpbb_realpath($path)
	{
	  Тут код функции
        }
}

Вот не идиотизм это? Я не гуру программирования, но такой прием, как функция в if-else с одинаковым именем, вижу впервые. Это кстати и есть причина ошибки. Заменяем эту «чудную» конструкцию на следующее:

	function phpbb_realpath($path)
	{
		if (!function_exists('realpath'))
		{
			return phpbb_own_realpath($path);
		}
		$realpath = realpath($path);

		// Strangely there are provider not disabling realpath but returning strange values. :o
		// We at least try to cope with them.
		if ($realpath === $path || $realpath === false)
		{
			return phpbb_own_realpath($path);
		}

		// Check for DIRECTORY_SEPARATOR at the end (and remove it!)
		if (substr($realpath, -1) == DIRECTORY_SEPARATOR)
		{
			$realpath = substr($realpath, 0, -1);
		}

		return $realpath;
	}

Неужели этот код менее читаемый чем в исходниках форума?

Если бы такие ошибки отлавливались как-нибудь устройством, вроде как жироуловитель, который решает свою задачу, то несомненно прибор пользовался бы успехом.
[ad name=»Adsense»]

Индусский код в phpBB3 — ошибка при установке и её устранение: 8 комментариев

  1. Сам сейчас пишу CMS и натыкался несколько раз у себя на подобные ляпы. Находить их в коде других при случайном просмотре — одно дело, а когда делаешь, бывает что-то напишешь, потом подправишь, потом еще 78 с половиной раз подправишь, и в итоге сам не замечаешь как такое выходит. И вроде у тебя все работает, не замечаешь.

    • нет ну ляпы в коде возможны. но вот так вот функции создавать, тут уж увольте, непонимаю

  2. Кому как, когда я писал свою CMS я продумывал всё на перёд, возможно ошибка кроется именно в большом количестве разработчиков, один создал кусок кода, второй потом переделал, уже на готовых базах, без создания их по новой, и в результате чего ошибка при установке, которую не кто не проверил, отправить бы этот кусок создателям пущай подправят:)

    • То что падает инсталл, то бывает не на всех версиях, они проверили, у них сработало и хорошо. Меня больше удивила сама такая конструкция, это пздц. Неужели приведенный мной пример не лучше?
      А заслать можно конечно, как улучшение кода. А вот когда пишеш свою CMS все равно все не предусмотришь, иногда приходится подпиливать но грамотно сделанная позволит избежать многочасового допиливания. Например мне как-то потребовалось, что CMS работала без базы, только на XML. Два-три часа и готово.

  3. А что вы хотите за халяву? Халявный же движок форума, качественный если бы был, то за деньги бы продавался 😉

    • ну он не сильно то и плохой, движок то, админка конечно для меня дикая какая-то :), но хороший. IPB говорят покруче будет, но не активно не использовал

  4. Может у Вас еще и при «Could not get style data», возникающей после установки, есть решение?

Обсуждение закрыто.