Насколько легко расширить / изменить Zend Framework? - PullRequest
3 голосов
/ 01 октября 2009

Я недавно начал создавать версию 2 моей летней пользовательской инфраструктуры MVC. Это отлично сработало для меня в ряде проектов, но я определенно вижу возможности для улучшения. В нем отсутствуют некоторые основные функции, такие как ACL, проверка формы и кэширование. Как бы мне ни хотелось создавать эти детали самостоятельно, я знаю, что на самом деле это не разумное решение. Итак, я начал смотреть на Zend Framework 1.9. Мне действительно нравится, как его библиотека компонентов слабо связана. Однако, глядя на разные учебники, он кажется очень многословным. Я видел несколько примеров приложений, которые я мог дублировать, используя меньше кода с моей собственной платформой. Поэтому я бы хотел переопределить многое из этого, чтобы сделать его более дружественным к RAD. Поэтому, прежде чем я потратил много времени на изучение фреймворка, я надеялся, что кто-нибудь сможет пролить свет на эту тему для меня. В глубине души я программист, и у меня нет проблем, чтобы тратить часы на часы, настраивая и настраивая что-то, если у него есть прочная основа (что, я надеюсь, есть у ZF).

Должен заметить, что я очень рад, что Doctrine можно интегрировать с ZF.

Если ZF не может быть легко расширяемым, какие еще фреймворки (которые также имеют ACL, проверку формы, кэширование)? Я смотрел на Symfony, но вся эта конфигурация поверх конвенции меня очень беспокоит.

Заранее спасибо за любой вклад.

Редактировать
Чтобы ответить на вопрос Таркуна, я имею в виду, что под «легко расширяемыми» я имею в виду то, что я могу свернуть свои собственные классы (которые могут расширять или не расширять классы ZF) и упаковать их в структуру, чтобы я мог легко создать основу кода для своего собственного проекты.

Ответы [ 6 ]

8 голосов
/ 01 октября 2009

Среди популярных фреймворков PHP ZF, безусловно, наиболее легко расширяется, особенно из-за слабой связи.

Спасибо за разъяснения.

То, что вы описываете, это именно то, в чем хорошо работает ZF, но я бы сказал, что это именно то, в чем хороша ООП, поэтому я бы рассмотрел структуру ОО, которая не поддерживает это, для мусорного ведра.

В любом случае. С ZF это обычно делается так, что ваша собственная библиотека находится в параллельной структуре со структурой папок ZF. Вы можете использовать автозагрузчик ZF и зарегистрировать папку библиотеки в автозагрузчике, добавив ее в пространство имен. Пример:

//this will be the only require needed for your whole application
require_once 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
$loader->registerNamespace('Mylibrary_');

В Mylibrary вы должны следовать правилам именования ZF. Скажем, вы хотите расширить класс Zend_Db_Table_Abstract. Этот класс расположен логически в Zend / Db / Table / Abstract.php. Ваша библиотека должна теперь скопировать эту структуру: Mylibrary / Db / Table / Abstract.php. И вы бы назвали свой класс в этом файле:

class Myproject_Db_Table_Abstract extends Zend_Db_Table_Abstract
{
    /*
    now you're ready to extend and override as much as you like.
    and as a bonus you'll not even hav to include your library files 
    since your library is registered with the loader
    */
}

Когда вы задавали этот вопрос, вы имели в виду что-то еще?

2 голосов
/ 01 октября 2009

Я разработал свой собственный фреймворк, расширяя ZF. И я могу сказать вам, что это легко сделать. Вы можете использовать то, что вы хотите, и заменить то, что вы не хотите, довольно легко. Полный ZF следует ООП до глубины души. Они используют лучшие практики повсюду. Я многому научился, соблюдая его код.

Лично я считаю, что ZF - лучший php-фреймворк, который я когда-либо видел.

1 голос
/ 01 октября 2009

Это не идеально - в ZF была тенденция использовать статические члены и конкретные зависимости классов - но некоторые из них были устранены в более поздних версиях платформы. Я бы сказал, что по сравнению с другими подобными фреймворками у ZF все хорошо. На самом деле, слабая связь, вероятно, самая большая точка продажи каркаса.

1 голос
/ 01 октября 2009

Лично Zend FW мой любимый. Это пинает задницу. Период. Тем не менее, вы должны быть кодером в душе, чтобы иметь возможность оценить это. Это может стать довольно абстрактным.

ответить на ваш вопрос; Zend FW очень расширяемый, все - на самом деле все - может быть расширено. Соглашение об именах классов: Класс Zend_This_IsAn_Example находится в /library/Zend/This/IsAn/Example.php, который вы бы расширили как Whwhat_This_IsAn_Example, который вы бы поместили в /library/Whwhat/This/IsAn/Example.php Он также включает автозагрузку, которую вы можете включить, поэтому вам больше не нужно будет требовать файлы классов_conce.

структура MVC;

/ приложение / приложение / контроллеры / Приложения / и т.д. / приложения / модели / приложение / просмотров /библиотека / Библиотека / Zend / Библиотека / заказ / Общественности

Выезд http://framework.zend.com/manual/en/introduction.html и http://framework.zend.com/docs/quickstart

0 голосов
/ 01 октября 2009

Суть в том, что вы можете легко кодировать интерфейс. Вы не довольны реализацией Zend_Acl_Resource? Создайте свой собственный класс ресурсов, реализующий Zend_Acl_Resource_Interface:)

0 голосов
/ 01 октября 2009

почти нет проблем с расширением Zend Framework.

Обычной практикой является установка каких-то «myExtenions», которые сосуществуют с библиотекой Zend Framework. В качестве примера вы можете взглянуть на:

Zym Zend Framework Extension

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