Сегодня мы с Мишей разговорились в ICQ. Разговор получился ОЧЕНЬ длинный и офигительно интересный. Читаем под катом:
Continue reading »
Сегодня вышел Zend Framework версии 1.5. Почитать про этот релиз поподробнее можно здесь. Самые полезные нововведения, на мой взгляд, это Zend_Form и Zend_Layout (насколько я помню, до этого в релизах его не было).
Параллельно появилось два туториала для начинающих - Getting Started with Zend Framework 1.5 (до этого туториал покрывал лишь версию 1.0, насколько я помню) и Zend Framework QuickStart. К сожалению, обещанный именно к этому релизу Zend_Build в сам релиз не попал, но в инкубаторе он есть, так что надежда на скорый выпуск этого компонента всё же остается. Посмотрим, посмотрим.
PS. Сайт Zend Framework’а также обновился. :)
Со следующей версии Ubuntu (а это, как мы все помним, будет 8.04 или Hardy Heron) в неё будет включен Zend Framework. Правда не уточняется, что на самом деле значат слова “to be an integral part of the Ubuntu distribution” - либо ZF просто будет включен в поставку по умолчанию (что, на мой взгляд, не бог весть какое достоинство), либо у убунтовцев и Canonical действительно на ZF есть планы (создание средств разработки с использованием ZF, типа Zend Studio, либо построение системы управления Ubuntu’ой на PHP и ZF, во что, лично я не сильно верю)… В общем - я достаточно смутно представляю, какие преимущества от этого “сотрудничества” получат пользователи Ubuntu, но… Поживем - увидим.
PS. Mac’и поставляются с RoR, а Ubuntu - с ZF. ![]()
Разработчики Zend Framework решили последовать примеру популярных на данный момент не-PHP’шных фреймворков (в частности, ROR) и решили добавить в ZF работу с консолью и генерацию кода. Подробно можно прочитать тут (англ).
Хочется отметить комментарий Александра Макарова:
Разработчики ZF последовали моде и скорее всего включат в ZF 1.5 консольный генератор кода. Что означает возможность билда из метаданных и наличие столь модного сейчас скаффолдинга.
Позволю себе немного не согласится. Если походить по ссылкам и почитать про Zend_Console, Zend_Build, Zend_Build for Core, то можно заметить первое несоответствие - нигде в них не содержится Zend_Db в зависимостях ни в каком виде. Это раз. Два - структура ZF очень продуманная и гибкая, таким образом предполагать, что CRUD будет реализован простым наследованием от Zend_Controller_Action, с которым будут связаны определенного вида View’хи, по меньшей мере - странно. Мне видится реализация такого CRUD’а только, если у нас появится 2 дополнительных набора элементов - поля для таблиц (что-то типа Zend_Db_Table_Field) и widget’ы (типа ), которые будут вызваны для этих полей при их рендеринге (Zend_View_Widget, хелперы тут не подойдут немного, ИМХО, хотя в данном случае могу ошибаться). Вот тогда всё будет точно следовать стилю ZF.
Но тогда назревает другая проблема - если есть Field’ы (с валидаторами и прочим), то почему не сделать нормальный ORM (заюзав, естественно паттерн ActiveRecord). А, насколько я знаю, полноценная реализация ORM в roadmap ZF не входит никаким боком. Более того - они явно говорили, что реализовывать её не будут (ссылку найти сейчас не могу, к сожалению). Так что, ИМХО, Scaffolding’у в ZF не быть…
PS. А как вообще можно перевести Scaffolding на русский язык?…
В виду некоторых обстоятельств (пока не буду говорить, каких) полностью перейти на Python + Django и забить на PHP не получается. В связи с этим вопрос - какой из PHP-фреймворков выбрать для изучения и последующего использования.
Кандидаты:
- Zend Framework - в принципе, если его основательно помучать, то за пару недель-месяц из него можно сделать неплохой каркас для быстрой разработки сайтов. Преимущества - красивый код, продуманность в архитектуре, гибкость (хотя во многих случаях она и не нужна). Недостатки - относительно медленный, нет всякой “помощи” разработчикам (типа скаффолдинга и прочего), нет реализации ActiveRecord.
- CodeIgniter - хороший, простой, и, самое главное, быстрый фреймворк. По скорости обгоняет все остальные (вчера был тест ZF/CakePHP/CI на линуксе с помощью ab - CI выиграл, причем с ощутимым отрывом). Есть скаффолдинг, есть куча плагинов, некоторые - достаточно интересные (в частности, rapyd).
- CakePHP - у этого фреймворка куча поклонников, много материалов по использованию и рабочих приложений. В недостатки можно записать жесткую тормознутость - он чуть ли не в 1,5-2 раза тормознее ZF (интересно, с чего бы это?).
- Советовали еще Limb, Solar, но пока их не смотрел. Еще что-нибудь предложите?
PS. Пока что склоняюсь к CI…
Те, кто читают меня довольно давно, знают, что я отношусь к той категории программистов, которые любяят и умеют использовать то, что было сделано раньше - фреймворки, библиотеки и т.д. Так вот, сегодня я поведу разговор о целесообразности использования Zend Framework при построении сайта по схеме MVC и о целесообразности его использования вообще.
Zend Framework в MVC
Для начала - моя цитата:
А я все больше склоняюсь к Django.
А по поводу ZF меня все больше посещают такие мысли: стройным и красивым он кажется только на первый взгляд и именно из-за того, что у нас по сути получается набор классов, которые нам самим предложено связывать. Другие фреймворки нам предоставляют уже готовую структуру каталогов и некоторые “настройки по умолчанию”, а в Zend’е это все нужно делать самому. И в итоге после настройки фреймворка под себя он все больше становится “некрасивым” и похожим на другие фреймворки.![]()
Вот это моя позиция. Могу добавить еще одно - для того, чтобы юзать этот фреймворк, прийдется еще достаточно много всего под него дописать.
Zend Framework как библиотека классов
А вот как библиотеку классов ZF использовать не только можно, но и нужно. Я вот на себе прочувствовал, насколько удобно работать с почтой через Zend_Mail по сравнению со стандартными функциями imap_*. Да и Zend_Db и Zend_Log юзать достаточно удобно.
Писал недавно скрипт, который загружает файлы с POP3-сервера, парсит их и загружает в бд. Сначала написал просто функциями стандартными, а потом переписал с использованием ZF - код стал намного боле красивым, более легким в понимании и сократился в 2 раза. Так что в этой ипостаси ZF, на мой взгляд, идеальное замена многих модулей стандартной библиотеки PHP. Также радует наличие во фреймворке работы со всякими Web-сервисами - Amazon, del.icio.us, Flickr, и это еще не полный список, к тому же разработчики ZF планируют развивать фреймворк именно в этом направлении.
Для себя я вывод относительно ZF сделал такой - иметь на своем серваке однозначно. Даже если если я не буду его использовать для MVC - я буду использовать отдельные его части внутри самого сайта, благо, с этой задачей ZF справляется на отлично.
Какие языки сейчас используются в веб-программировании? Навскидку я могу составить такой список: C#, Java EE, Python, Ruby, PHP, Perl. JavaScript брать в расчет не буду - сейчас я хочу поговорить именно о server-side языках.
C# - первая версия этого языка появилась в 2000 году, для веба стал использоваться с приходом ASP.NET, который вышел в 2002м году.
Java EE - первая версия, которая называлась J2EE и имела версию 1.2, вышла в далеком1991м году. Следующая версия 1.3 была выпущена аж через 11 лет. Сейчас новые версии выпускаются гораздо чаще. Используется в основном для разработки веб-сервисов. По крайней мере я не встречал мелкие или небольшие компании, которые писали бы “просто сайты” на Java EE.
Python - на самом деле достаточно древний язык. Первая версия языка была выпущена в 1990м году. Когда его начали достаточно сильно использовать в веб-приложениях сказать трудно. Можно считать, что в интернет он вошел с появлением таких легких и быстрых фреймворков, как Django/Turbogears и т.д. В таком случае получается что в инете он с 2004-2005-го года. На самом деле все было несколько раньше, но приход в интернет в то время был не совсем очевиден. Фреймворк Zope, который был изначально нацелен на интернет, был выпущен в 1995-1997 годах. Точнее на данный момент сказать не могу. Но еще раз повторюсь - это не было массовым явлением.
Ruby - разработан в 1995м году. В интернете стал использоваться с появлением, ясное дело, Ruby On Rails, который вышел в 2004-м году.
PHP - эдакий старичок программирования сайтов. Первая версия, которая называлась PHP/FI вышла в 1994м. А тот PHP, который мы знаем появился в 1997м году с выходом PHP3 и именно с этого момента он начал набирать популярность как язык для веб-разработки.
Perl - вышел в 1987м году, а вот когда появился в вебе - для меня остается тайной. Я этот язык особо никогда не любил и уж тем более никогда не использовал. Пользуются ли им еще в вебе - пользуются, но, как мне кажется, популярность этого языка неуклонно падает.
Теперь, собственно, к чему я вел это все. Выводы по Perl’у я делать не могу, а вот по всем остальным языкам получается интересная картина. C#/Python/Ruby - заявили массово о себе совсем недавно, причем их массовое распространение связанно с написанными для них фреймворками (ASP.NET/Django и компания/ROR). Java - в вебе используется только Java EE, и, хоть и появилась она давно, сейчас явно не собирается скидывать обороты. PHP - язычок, который пришел в веб сам, для которого до недавнего времени и фреймворков то не было, а те что были - их не использовали.
Я веду к тому, что все современные языки в вебе используют фреймворки, причем используют чуть ли не в обязательном порядке (да, вы можете на руби писать веб приложение, не используя рельсы, но никто этого при здравом уме делать не будет). А вот писать приложение на PHP не используя никаких уже созданных компонент - вполне обычное дело. И народ наоборот не хочет использовать фреймворки аргументируя это тем, что они “слишком сложные”, “тормозные” и т.д. И очень большая часть сайтов делается потом непонятно как… посмотришь код - убиться хочется. такое впечатление, что фраза “PHP портит нормальных программистов” - это не бред, а самая настоящая реальность.
В итоге (все ИМХО):
- смысла использовать PHP, если есть возможность использовать что-то более современное, - НЕТ
- если уж использовать PHP, то с умом - не писать все сначала, а выбрать удобные компоненты для разработки нужного вам веб приложения
Из PHP Framework’ов я бы посоветовал выбрать Zend Framework, как наиболее конфигурируемый и обьектно-ориентированный. Для себя я выбрал именно его. Но в нем есть одно “но” - если вы в качестве wrapper’а для DB собираетесь использовать зендовские классы - вам возможно прийдется сменить хостера, так как нужна будет поддержка PDO/PDO_MySQL/PDO_PgSQL, которая, как мне кажется, не у всех хостеров есть.
PS. Лично мне сейчас нравится:
- для веб-разработки для себя - Python, для заказов - PHP + Zend_Framework
- для desktop-gui-приложений - C#
- для консольных - C++
PPS. Пару часов назад гуглил украинских хостеров. Завтра буду узнавать - есть ли у них поддержка PHP >= 5.1.3 и PDO_MySQL (требования к Zend Framework’у). Посмотрим, какие результаты это даст. Кто знает хороших укр. хостеров - отписывайтесь, составлю табличку - кто и что поддерживает.
Сегодня у нас на повестке дня два линка:
- Перевод черновика стандарта C++09 на русский язык. Для тех, кто не в курсе - в C++09 - новый стандарт языка C++, который будет выпущен в 2009-м году (логично, не правда ли :)), стандарт определяет саму структуру языка + его стандартную библиотеку (STL).
- Пример использования Zend_Translate под звучным названием “Build Multi-lingual Websites With the Zend Framework”. Я пока что не дочитал, но просмотрел. На первый взгляд - ни о каком “build websites” речи не идет, просто показывается, как юзать Zend_Translate, но может кому-то будет полезно.
PS. Я уже дома. turboNOMAD, давай линк.
Такс, вчера самый навороченный фреймворк для PHP добрался до своего релиз кандидата. Это радует. Список изменений - здесь.
PS. Комментировать, вопреки обычаям, не буду - смыла большого нет, да и желания лазить в кодах тоже.
Такс… Много чего обещал. Буду исправлятся.
Планы на эту и следующую неделю таковы:
- CSS, если найду дизайнера
- C++
- Класс графа (если честно, сделанный так сяк, сил уже нет моих лабы делать)
- Класс-обертка для работы клавиатурой
- Поиск подстроки в строке за сублинейное время - поглядим, как получится
Отложенные:
- PHP
- Zend Framework ModelDb-класс, боюсь просто не осилю продолжение
- Краткий обзор CodeIgniter, тоже будет, но не в ближайшие 2 недели
Пока что все. Что будет дальше - как жизнь покажет.






Последние комментарии