Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Zend PHP Framework, работа 
:(
    Опции темы
IZ@TOP
Дата 9.3.2006, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



AntonioBanderaz, спасибо за инфу. Сейчас посмотрим и заценим smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Rock
Дата 17.6.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 13.1.2005
Где: Краснодар

Репутация: нет
Всего: 1



Ну что, с начала обсуждения сабжа прошло не мало времени, недавно вышла новая версия фрэймворка:
Zend Framework 1.0.0 Release Candidate 2  (2007-06-07)
качать здесь: http://framework.zend.com/download

У кого какое мнение по этому фрэймворку, кто уже использует его в своих проектах, поделитесь опытом...
Сейчас вот как раз занимаюсь выбором фрэймворка и выбор пока что пал на этот.
PM MAIL ICQ   Вверх
sTa1kEr
Дата 17.6.2007, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Имхо, самый перспективный фреймворк среди всех имеющихся на данный момент. Отмечу, что в нем понравилось:
1. Написан полностью под 5ый PHP и все вытекающие от сюда плюсы. ООП, Exception-ы итд.
2. Хороший стиль. HEREDOC-и грамотные и есть у всех классов/методов. Хотя встречаются случаи, где Zend Studio не может понять, что возвращает метод Zend Framework-а smile
3. Очень грамотная обработка исключений. Никаких trigger_error(), die() и пр. 
4. Достаточно хорошо реализовано кэширование.
5. MVC реализован достойно, что не сказал бы про другие популярные фреймворки.
6. Сам по себе фреймворк очень гибкий, предельно просто расширить любую его функциональность не затрагивая сам движок.
Имхо, минусы:
1. Тормазнутый (в частности MVC).
2. Еще сыроват.
3. MVC... Хотелось бы что-нибудь оригинальнее...
4. Хотелось бы видеть также инструментарий для AJAX, но увы им там и не пахнет.
5. Loader классов кривой...

Это сообщение отредактировал(а) sTa1kEr - 17.6.2007, 18:19
PM MAIL   Вверх
Rock
Дата 17.6.2007, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 13.1.2005
Где: Краснодар

Репутация: нет
Всего: 1



В общем со всеми плюсами согласен, вот по минусам хотелось бы уточнение, я просто только начинаю использовать его, хочется знать все подводные камни:

С реализацией MVC в ZF почти разобрался, что именно Вы считаете тормознутостью в ней?

Цитата(sTa1kEr @  17.6.2007,  16:48 Найти цитируемый пост)
5. Loader классов кривой... 

а что именно в нём криво?

PM MAIL ICQ   Вверх
sTa1kEr
Дата 17.6.2007, 18:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(Rock @  17.6.2007,  17:30 Найти цитируемый пост)
С реализацией MVC в ZF почти разобрался, что именно Вы считаете тормознутостью в ней?

Производительность с другими фреймворками я не сравнивал, но общее впечатление при работе с контроллерами мне показалось очень медленным. В принципе этот пункт можно было объединить с 3им пунктом.
Не нравится мне, что в *скриптовом* фреймворке так расточительно используется ресурсы сервера. При каждом клике диспетчер проводит достаточно большую и, имхо, бесполезную обработку всех контроллеров, плагинов, хелперов итп. К примеру, в ASP.NET-е это не было бы критично, т.к. ASP.NET, в отличии от PHP, это веб приложение, которое запущенно постоянно и которому не требуется каждый раз обрабатывать весь исходный код перед началом работы основных скриптов. Но для PHP это, имхо, не правильно.
Цитата(Rock @  17.6.2007,  17:30 Найти цитируемый пост)
5. Loader классов кривой... 

а что именно в нём криво?

Дело в том, что вся логика подгрузки классов основана на относительных путях. Еще ладно, если бы относительно той папки в которой лежат сами скрипты, но они загружаются относительно include_path ! (примерно также, как и в PEAR-е). Из-за этого были проблемы, да и не люблю я зависеть от подобных настроек PHP. При изучении этого фреймворка, я первым делом комментарил все инклюды и методы Loader-а и загружал все необходимые классы своей функцией.
PM MAIL   Вверх
Rock
Дата 17.6.2007, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 13.1.2005
Где: Краснодар

Репутация: нет
Всего: 1



Цитата(sTa1kEr @  17.6.2007,  18:15 Найти цитируемый пост)

Дело в том, что вся логика подгрузки классов основана на относительных путях. Еще ладно, если бы относительно той папки в которой лежат сами скрипты, но они загружаются относительно include_path

Ну в общем это легко решается с помощью функции set_include_path(), как я уже успел разобраться, в дальнейшем я просто регистрирую авто загрузчик классов - Zend_Loader::registerAutoload(). В принципе пока на проблемы не натыкался, т.к. часто использую spl autoload.

Цитата(sTa1kEr @  17.6.2007,  18:15 Найти цитируемый пост)
При каждом клике диспетчер проводит достаточно большую и, имхо, бесполезную обработку всех контроллеров, плагинов, хелперов итп.


Вот с этим ещё не успел разобраться полностью, ну думаю эту проблему можно решить с помощью кэширования.
PM MAIL ICQ   Вверх
sTa1kEr
Дата 17.6.2007, 23:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(Rock @  17.6.2007,  20:19 Найти цитируемый пост)
Ну в общем это легко решается с помощью функции set_include_path(), как я уже успел разобраться, в дальнейшем я просто регистрирую авто загрузчик классов - Zend_Loader::registerAutoload(). В принципе пока на проблемы не натыкался, т.к. часто использую spl autoload.

Какая разница, что set_include_path(), что прописать путь в php.ini. То что на этом завязан Loader, меня не устраивает, т.к. я использую другую логику (я тоже использую autoload, только свой), а исправить можно только в самом коде. В общем это мое имхо.
Цитата(Rock @  17.6.2007,  20:19 Найти цитируемый пост)
Вот с этим ещё не успел разобраться полностью, ну думаю эту проблему можно решить с помощью кэширования.

Вот как они решат эту проблему, пусть хотя-бы с помощью кэширования, тогда и посмотрим насколько он менее тормозной станет. В некоторых местах действительно можно добиться лучшей производительности при помощи кэширования, но чаще будет слишком сложно поддерживать в кэше актуальные данные, либо проверка актуальности кэша просто сведет на нет весь прирост производительности.
PM MAIL   Вверх
Scorched
Дата 5.7.2007, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 24.6.2007

Репутация: 1
Всего: 1



Цитата(sTa1kEr @  17.6.2007,  16:48 Найти цитируемый пост)
1. Тормазнутый (в частности MVC).

mvc того стоит. если она не нужна ее можно просто не использовать, там и без того есть на что посмотреть. различные части ЗФ мало зависят друг от друга.
Цитата

Производительность с другими фреймворками я не сравнивал, но общее впечатление при работе с контроллерами мне показалось очень медленным. В принципе этот пункт можно было объединить с 3им пунктом.
Не нравится мне, что в *скриптовом* фреймворке так расточительно используется ресурсы сервера. При каждом клике диспетчер проводит достаточно большую и, имхо, бесполезную обработку всех контроллеров, плагинов, хелперов итп.

ну вобще-то вполне естественно что каждый клик -> это http-request. проход идет далеко не по всем контроллерам и тем более плагинам и хелперам. ЗФ писали те, кто больше других знают как оптимизировать пхп-код ;) 

Цитата(sTa1kEr @  17.6.2007,  16:48 Найти цитируемый пост)
2. Еще сыроват.

уже был 1.0.0 релиз

Цитата(sTa1kEr @  17.6.2007,  16:48 Найти цитируемый пост)
3. MVC... Хотелось бы что-нибудь оригинальнее...

а что, есть что-нибудь лучше MVC ?? smile 

Цитата(sTa1kEr @  17.6.2007,  16:48 Найти цитируемый пост)
4. Хотелось бы видеть также инструментарий для AJAX, но увы им там и не пахнет.

вобще-то это PHP-фреймворк, а не JS )) ZF предоставляет все необходимое для организации серверной части AJAX-приложений на пхп. например класс для работы с JSON. а к клиентской части пхп не причем, можно успешно юзать например prototypejs вместе с ЗФ

Цитата(sTa1kEr @  17.6.2007,  16:48 Найти цитируемый пост)
5. Loader классов кривой...

Цитата

Какая разница, что set_include_path(), что прописать путь в php.ini. То что на этом завязан Loader, меня не устраивает, т.к. я использую другую логику (я тоже использую autoload, только свой), а исправить можно только в самом коде. В общем это мое имхо.

зенды руководствовались простым правилом - библиотеки классов должны располагаться в папке для библиотек )) если на сервере 100 сайтов используют ZF и у каждого в папке своя копия ЗФ - это тупо, лучше просто сложить в инклуд - он для этого и нужен. да и тем более никто не мешает использовать одновременно оба подхода загрузки.

з.ы. если сравнивать ZF с аналогичным продуктом, то имхо корректнее всего сравнивать с Rails (для Ruby) или с Django (для Python) -- потому что именно такую нишу должен был заполнить ЗФ для пхп.

Это сообщение отредактировал(а) Scorched - 5.7.2007, 19:49
PM MAIL   Вверх
sTa1kEr
Дата 5.7.2007, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(Scorched @  5.7.2007,  19:49 Найти цитируемый пост)
уже был 1.0.0 релиз

Почему многие любят находить старые топики, цитировать их и говорить "что за чушь вы говорите? уже все давно по другому!" smile Я знаю, что на днях вышел релиз, но на момент написания этого поста, ZF был еще в стадии BETA. Да и сейчас в первом релизе еще много багов и недочетов, почитайте хотя бы Issue Tracker. Но, не смотря на все это, Zend молодец, очень уверенно движется вперед.
Цитата(Scorched @  5.7.2007,  19:49 Найти цитируемый пост)
а что, есть что-нибудь лучше MVC ??

MVP.
Цитата(Scorched @  5.7.2007,  19:49 Найти цитируемый пост)
вобще-то это PHP-фреймворк, а не JS )) ZF предоставляет все необходимое для организации серверной части AJAX-приложений на пхп. например класс для работы с JSON. а к клиентской части пхп не причем, можно успешно юзать например prototypejs вместе с ЗФ

Если так подходить к этому вопросу, то зачем вообще тогда нужны View Controller-ы, Helper-ы для них, да и вообще весь фреймворк? Писать на нем серверные службы? JS уже давно стала неотъемлемой частью создания веб-приложений. И создать для AJAX оснастку было бы не только не третьей ногой, но и абсолютно логичным и нужным решением. Кстати, Zend планирует в будущем расширить функционал для работы с AJAX. http://framework.zend.com/whyzf
Цитата

Latest Web Development Features

    * AJAX support – meet the ease-of-use requirements your users have come to expect

Цитата(Scorched @  5.7.2007,  19:49 Найти цитируемый пост)
зенды руководствовались простым правилом - библиотеки классов должны располагаться в папке для библиотек ))

Да дело не в этом. Попробуйте воспроизвести у себя такую ситуацию: ZF как положено лежит рядышком с PEAR-ом и все его классы замечательно подгружаются. Но у вас есть *свой* авто-загрузчик для *своих* классов (ну не хочу я перед каждым использованием класса писать require_once(), Zend_Loader::loadClass() или еще что-либо! ). Теперь попробуйте создать свой класс Table_Row для какой-либо таблицы и при этом загрузить его через свой авто-загрузчик не трогая сам ZF. Удачи.
PM MAIL   Вверх
Rock
Дата 6.7.2007, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 13.1.2005
Где: Краснодар

Репутация: нет
Всего: 1




Цитата(sTa1kEr @  5.7.2007,  20:48 Найти цитируемый пост)
Теперь попробуйте создать свой класс Table_Row для какой-либо таблицы и при этом загрузить его через свой авто-загрузчик не трогая сам ZF. Удачи

Ну так назовите этот класс My_Table_Row он будет отличаться от Zend_Table_Row от Zend_Db_Table_Row и т.д. Что вам мешает это сделать?
PM MAIL ICQ   Вверх
sTa1kEr
Дата 6.7.2007, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(Rock @  6.7.2007,  00:46 Найти цитируемый пост)
Ну так назовите этот класс My_Table_Row он будет отличаться от Zend_Table_Row от Zend_Db_Table_Row и т.д. Что вам мешает это сделать? 

Да при чем тут имя класса? smile Все дело в том, что для многих классов, таких как пользовательский клас Row, он сначала запускает метод Zend::loadClass($my_private_class), первая строчка этого метода:
Код

if (class_exists($class, *false*) || interface_exists($class, *false*))

Обратите внимание на второй параметр, он означает, что авто-загрузчик не будет использоваться при проверке наличия классов. Все, далее он пытается найти класс своим методом и если не находит - экзепшен... Т.е. либо называйте классы как МЫ хотим, либо идите другой дорогой... Не смотря на то, что это мой класс.

Это сообщение отредактировал(а) sTa1kEr - 6.7.2007, 01:15
PM MAIL   Вверх
Rock
Дата 6.7.2007, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 13.1.2005
Где: Краснодар

Репутация: нет
Всего: 1



Ну так а что Вам мешает реализовать свой авто-загрузчик, который будет уметь подгружать Ваши классы? с помощью spl_autoload_register() или же с помощью Zend_Loader::registerAutoload('Your_Loader_Name'), что в принципе эквивалентно. Хотя с исключениями они действительно намудрили...

Добавлено через 9 минут и 26 секунд
Хотя беру свои слова обратно, ничего они не мудрили с исключениями:
Zend_Loader
Код

    public static function autoload($class)
    {
        try {
            self::loadClass($class);
            return $class;
        } catch (Exception $e) {
            return false;
        }
    }

т.е. при регистрации метода Zend_Loader::autoload() - через Zend_Loader::registerAutoload() или в ручную - все исключения отлавливаются, как мы видим, что позволяет остальным авто-загрузчикам попытать счастье, в поиске класса.
PM MAIL ICQ   Вверх
sTa1kEr
Дата 6.7.2007, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(Rock @  6.7.2007,  01:28 Найти цитируемый пост)
Ну так а что Вам мешает реализовать свой авто-загрузчик, который будет уметь подгружать Ваши классы? с помощью spl_autoload_register()

Еще раз по порядку:
1. У меня реализован мой авто-загрузчик, который быстро и комфортно подгрузит любой класс. Он прекрасно РАБОТАЕТ. Если я напишу  строку типа $row = new MyRow(); то не будет никаких проблем.
2. У меня реализован класс (предположим он называется MyRow), наследованный от Zend_Db_Table_Row_Abstaract
3. Я работаю с базой данных и ZF видит, что для некой таблицы я реализовал свой клас MyRow.
4. Он явно вызывает метод Zend::loadClass() для поиска этого класса и естественно не находит его, так как не использовал ни одного авто-загрузчика, а сразу выдает Exception.
Итого: я не могу использовать свой авто-загрузчик для подобных классов.


Это сообщение отредактировал(а) sTa1kEr - 6.7.2007, 01:47
PM MAIL   Вверх
WolfON
Дата 20.7.2007, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 1
Всего: 8



Хороший фреймворк - когда начал писать свое интуитивно пришел к многим похожим решениям.

Единственная его проблема, чтобы нормально заменить один из компонентов (View например) приходиться углубляться во все его внутренности с напильником
PM MAIL ICQ   Вверх
Drkwv
Дата 5.9.2007, 06:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Если вы используете в работе именно Zend Framework - то почему (есть ведь Symfony, CakePHP и т.д.)? И что в нем реально вам помогло лучше и быстрее программировать?

 ! 
PARROT
Уважаемый Автор! Большая просьба перед созданием новой темы пользоваться поиском. А то бардак будет!


Это сообщение отредактировал(а) PARROT - 5.9.2007, 11:56
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0911 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.