Навеяно топиком http://www.php.ru/forum/viewtopic.php?t=29961 Подумал: чем я хуже? Собственно, мой велосипед, который, как мне кажется, гораздо более собран, хоть и написан в процедурном стиле (это мой бич, начал писать 2 года назад и ООП тогда совсем не понимал): http://narod.ru/disk/4277253001/vngin_beta_4.zip.html Написан человеком, которому только-только стукнуло 18 Я уже выкладывал это, но было дело давно и много-много критики я так и не получил В отличие от автора "ноу хау цмс", я критику люблю и по-умолчанию спорить с более разумными людьми не хочу. Детали "архитектуры" могу легко объяснить, т.к. понимаю, что разобраться так сразу будет непросто ) И сразу вопрос: реально ли с такими знаниями найти работу джуниором? Очень хочется развиваться, но для этого надо что-то реальное делать, не велосипеды.
в инсталляторе Strict Standards: Accessing static property goDB::$query_id as non static in E:\localhost\test\inc\func.sql.godb.php on line 91 и в итоге Fatal error: Uncaught DB Error. Query="INSERT INTO `vngin_modules` (is_global, is_admin, module_active, module_name, module_description, module_cp_name, module_settings, module_requires, module_uses, module_version, direct_access) VALUES (0, 1, 1, "cache_control", "Позволяет управлять файлами кеша.", "Управление кешем", "a:1:{s:14:\"cache_interval\";a:3:{s:5:\"value\";i:86400;s:4:\"type\";s:3:\"int\";s:11:\"description\";s:50:\"Выделять файлы старше (сек.)\";}}", "a:2:{i:0;s:11:\"user_events\";i:1;s:10:\"cp_modules\";}", "", "1.3.1", 0)" error = 1364 "Field 'module_sql_cache_time' doesn't have a default value" thrown in E:\localhost\test\inc\func.sql.godb.php on line 98
Это не от знаний зависит, если умеешь наглеть и кричать что ты крут и всё знаешь, то даже лидом могут взять, а можешь как я на собеседовании сопли жевать, и никто даже жуниором не возьмёт... В споре рождается истина, спорить надо, только вот к словам оппонентов прислушиваться надо, а не так что "я прав просто потому что я прав" Я делал сайт с одним парнишкой, так он в 12 писал так, что у меня глаза на лбу были (я по сути у него первое время учился, хотя старше его в 2 раза был) так что не показатель
Чтож тёзка. По качеству кода сказать не могу (только 2 минуты посмотрел) код вроде выглядит аккуратно. По самой структуре только вопрос... Нафига всё так сложно ? (куча циклов, функций, условий в условиях циклов в циклах, это сайт или система управления ракетами ?)
d1gi, это странно Ну как бы.. попытка сделать как можно больше "рычагов" (все таки это больше некое подобие cmf). Как то: разные типы модулей, их зависимости друг от друга, соответственно очередность исполнения, передача параметорв между ними итп
в процессе инсталляции... суть в том, что нельзя обращаться к статическим методам и свойствам конструкцией $this, надо использовать :: , если обращаетесь внутри класса, то self:: или parent:: по обстоятельствам. PS: видимо предложение не интересно
d1gi не-не.. это я знаю Забавно, что у меня при всех включенных ошибках этого нет =\ отписал насчет предложения
d1gi, уже увидел, перепишу ) Спасибо! Но нет никаких комментариев насчет всего этого говнокода в целом! (
а какие нужны комментарии? говнокод знатный но это не главное, главное у человека есть стремление развиваться и совершествоваться ну для начала рекомендую познакомиться со стандартом оформления кода, я предпочитаю вот этот http://framework.zend.com/manual/ru/cod ... ndard.html хотя и с малюсенькими отклонениями но эти отклонения оправданы
что сразу бросилось в глаза: нет единого стантарта по именованию методов, также в одном файле могут находится объявления нескольких классов.... в общем почитайте http://framework.zend.com/manual/ru/cod ... ndard.html попробуйте отличия с вашим кодом найти
d1gi, да там с классами только один файл с goDB.. =\ Больше нету классов ) А по именованию функций есть страндарт.. для модулей
ну вот я только на этот файл и нарвался %)))) процедурные вещи не интересуют, думаю если кому будет интересно процедурное программирование, то есть друпал а стандарты именования должны быть единымы на всё.
Какая нечистая сила заставила вас так извращаться! А вот это вообще, мягко выражаясь, капец! ООП отсутствует
Devzirom, если вы читали, то класс goDB написал не я ) Его автор Григорьев Олег. http://pyha.ru/go/godb/ Кстати, пиздеца в упор не вижу. Насколько я вообще понимаю, хороший класс - это класс, который можно безболезненно взять перенести в другой проект без редактирования. goDB написан именно с учетом на это. И я считаю, что это очень неплохой класс для работы с мускулем. А в чем извращение в том, чтобы каждый шаг в установщике вынести в отдельный файл?! Их так проще подключить и в случае чего добавить/убрать еще один шаг, не правя ничего в другом коде. Ну в моем случае в фунциях самой системы нет префиксов, а ко всем функциям модулей обязателен префикс вида "module_name_". Но в целом по оформлению согласен, оно немного "плавает" туда-сюда Я же в начале оговорил, что продедурное все. И сам понимаю, что в 2011 году это мало актуально. Но переписывать все это дело заного смысла нет никакого, а писать еще один такой же велик на ООП не стал, за неимением стимула. Вот в этом случае ваше, d1gi, предложение очень заманчиво
Может быть хотя бы вы, наконец, сможете мотивировать свои слова? Предыдущие ораторы кроме "капец" ничего внятного объяснить не сумели.
Нахер вообще мешать всё в одном методе? Зачем использовать for и $i? PHP: if ($fetch == 'col') { $A = Array(); for ($i = 0; $i < $numRows; $i++) { $r = $result->fetch_row(); $A[] = $r[0]; } return $A; } когда можно: PHP: if ($fetch == 'col') { $A = Array(); while($r = $result->fetch_row()) { $A[] = $r[0]; } return $A; } Нахер объявлять $numRows? Чем не нравится $result->num_rows? ------- Нахера использовать сомнительные классы в своей CMS?
Удержите свой праведный гнев и общайтесь, пожалуйста, как взрослый человек. Всё не мешается в одном методе. Это метод разбора результата по формату и в нём мешается только то, что относится к разбору результата. Можно очень много чего. "for против while" это несомненно самое важное на что следует обращать внимание при разработке приложений. Всё остальное - чепуха. Всем подчинённым программистам за подобное я даю по шее. Чтобы не гонять $result->num_rows в цикле, если вас так интересует зачем объявлена переменная. Несомненно, это единственное что может равняться по важности с проблемой for-vs-while
Есть много забавных конструкций. Код (Text): while (var = expression); mysql_query() or die(); x = (i++) - ((++j)--)++; и ещё много хитров..х выщей Всех их несомненно нужно использовать на начальном этапе обучения программированию, это забавно и развивает мышление. Но в сложном проекте, над котором работают множество человек код должен быть понятным, путь и займет на несколько строчек больше. Выполнение операции присванивания внутри выражения и использование его результата в дальнейшем, это забавный хак, позволяющий несколько сократить код, но это не то, что я могу допустить в коде, за который отвечаю.
Весь рунет заполнен подобным кодом. Вы можете впаривать его начинающим говно-кодерам, которые не в состоянии написать, то-что нужно им, но увы не мне. Я видел более достойные аналогии, и не на основе библиотеки mysqli. И ваш стиль программирования меня очень напрягает. Насчёт быстро и медлительно, само использование подобного класса в проекте, уже означает, что можно сделать быстрее, не использовав его. Сори за гонор. Но уж простите