Почему нельзя учится программировать на 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 разберется.

