Почему нельзя учится программировать на PHP, читая код опенсорсных проектов.

На форумах веб-разработчиков часто можно встретить вопросы в духе «Как научиться программировать на PHP». Можно дать массу разных полезных рекомендаций, но почему-то в каждой такой ветке форума найдется хотя бы один человек, который посоветует изучать исходники готовых продуктов.

Иногда мне хочется дать таким советчикам по башке.

Я верю, что существуют опенсорсные проекты, написанные грамотно, по которым, действительно, можно будет учится. Но новичок их искать не будет. Он просто возьмет что-нибудь популярное, например, phpBB, phpMyAdmin, Coppermine Photo Gallery или еще что-нибудь в этом духе. А вы видели, что эти проекты представляют собой «изнутри»? Ага, то-то и оно.

Вот вам пример:

/** * cpg_get_default_lang_var() * * Return a variable from the default language file * * @param $language_var_name * @param unknown $overide_language * @return **/ function& cpg_get_default_lang_var($language_var_name,$overide_language = null) { global $CONFIG; if (is_null($overide_language)) { if (isset($CONFIG['default_lang'])) { $language = $CONFIG['default_lang']; } else { global $$language_var_name; return $$language_var_name; } } else { $language = $overide_language; } include('lang/'.$language.'.php'); return $$language_var_name; }

При загрузке страницы Coppermine эта функция вызывается порядка 20-25 раз, что приводит к тому, что языковой файл (размером порядка 130kb) включается (include) эти самые 20-25 раз. И благополучно валит галерею, размещенную на шаред-хосте, с сообщением о том, что вся память израсходована.

Про ту порнографию, которая здесь творится с глобальными переменным, даже говорить уже не хочется.

Вот учись после этого на опенсорсе...

Мне могут возразить, что PEAR, Zend Framework, CakePHP - вещи вполне себе качественно написанные и пригодные для изучения, но хотел бы я посмотреть на новичка, который, например, в MDB2 разберется.

Оставить комментарий