
Zend Framework таки идет по пути старших братьев по разуму – Zend Tool поможет Вам в быстром создании проекта на основе ZF.
Для начала нам понадобится скачать Zend Framework с сайта разработчиков, или воспользоваться репозиторием проекта:
1 2 | ~$ svn co http://framework.zend.com/svn/framework/standard/trunk/bin/ ./bin~$ svn co http://framework.zend.com/svn/framework/standard/trunk/library/Zend ./library/Zend |
Примечание: если Вы true-линуксойд и частенько создаете проекты на ZF – то закиньте файл zf.sh в /usr/bin (или любой иной путь, где система сможет его найти), а папку Zend туда, где у Вас прописан include_path для PHP (выполните команду php -i |grep include_path)
У нас должна получиться следующая структура каталогов:
1 2 3 4 5 6 7 | htdocs|-- bin| |-- zf.bat| |-- zf.php| `-- zf.sh`-- library `-- Zend |
Теперь открываем консоль идем в директорию htdocs и набираем:
1 2 | # не забываем chmod a+x ./bin/zf.sh~$ ./bin/zf.sh create project ./ |
Примечание: утилита тестировалась под Linux, есть вероятность, что под Windows тоже будет работать (используйте zf.bat)
После этого у нас должен быть создан проект, и зайдя на страничку Вы должны увидеть что-то похожее на картинку в самом начале статьи. Структура каталога будет выглядеть следующим образом:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | htdocs|-- application| |-- Bootstrap.php| |-- configs| | `-- application.ini| |-- controllers| | |-- ErrorController.php| | `-- IndexController.php| |-- models| `-- views| |-- helpers| `-- scripts| |-- error| | `-- error.phtml| `-- index| `-- index.phtml|-- library|-- public| `-- index.php`-- tests |-- application | `-- bootstrap.php |-- library | `-- bootstrap.php `-- phpunit.xml[code]Идем дальше - создадим контроллер и экшены:[code lang="bash"]# создаем контроллер users и два экшена~$ ./bin/zf.sh create controller users~$ ./bin/zf.sh create action login users~$ ./bin/zf.sh create action logout users |
Смотрим на результат (файл UsersController.php):
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 | class UsersController extends Zend_Controller_Action{ public function init() { /* Initialize action controller here */ } public function indexAction() { // action body } public function loginAction() { // action body } public function logoutAction() { // action body }} |
Для каждого action’а будет создан практически пустой view скрипт:
1 | View script for controller users and script/action name login |
Примечание: Если папка public не является корневой – то добавьте в файл «/public/.htaccess» правило «RewriteBase /public/» после «RewriteEngine On»
Кроме данного функционала еще есть следующие “возможности”:
- Создание класса для юнит тестов, включение/выключение оных – провайдер test не распознается утилитой
- Создание view – ругается и ничего не создает, исправление ошибки в классе влечет за собой еще больше ошибок
В TODO у разработчиков:
- Генератор моделей – хотелось бы посмотреть на организацию “правильной” модели с учетом последних изменений в фреймворке
- Генератор форм – интересно, должна же быть связь с моделью, думаю будет вкусно
Полезные статьи:
Отличная идея
Генератор моделей и форм, вот действительно то что интересно будет посмотреть…
Кажись, запахло Symfony :)
Весьма удобная функциональность!
А как быть, если уже структура есть с модулями, генератор классов сможет понять куда вставить новый файл? или только для стандартной структуры подойдет?
Привет. А что значит “что-то сборка у них глючновата”? Какие бока?
Привет. На момент написания статьи была доступна версия 1.8.0 beta, у нее генератор отказывался работать вовсе, в SVN уже лежала рабочая версия, и именно она попала в релиз…
Пасиба за статью. Только начал изучать ZF. Очень помогло.
P.S. Небольшой оффтоп. Мог бы написать небольшую статейку о том, что находится в папочке tests, для чего это и с чем едят.
Не получится так. Разве что закидать в /usr/bin zf.sh в паре с zf.php. А лучше всего на мой взгляд:
– держать Zend Framework отдельно от всего остального
– пути к library/Zend и к extras/library/ZendX прописать в include_path
– в /usr/bin создать символическую ссылку (например zf) на bin/zf.sh
Неплохой генератор.
Что же касается генерации форм и моделей, то это возможно с помощью Doctrine ORM.
Для генерации используются yaml или xml файлы с основной стукрурой будущей модели, типа
Проводим генерацию, и уже можем использовать. Например, чтобы создать нового пользователя
$user=newUser();$user->username ='Вася Пупкин';$user->password ='pass';$user->save();Что интересно, возможна генерация между jaml, моделями и БД в любую сторону (модели из структуры БД, БД из jaml и т.п.)
Здраствуйте, может кто нить описать или кинуть ссылку, как запустить zf.bat(под винду), а то я уже 4 часа бьюсь об стенку и никак.
Если можна поподробнее, че я не так делаю.
Спасибо
to Андрей
1. Добавь путь к папке c php в PATH:
“Панель Управления->Система->Дополнительно/Переменные Среды”
2. Добавь путь к library в include_path (php.ini)
В консоли проверяешь:
>zf show version
Также рекомендую использовать PHP CLI для запуска подобных скриптов.
У меня возникла та же проблема, вроди как внял инструкциям, но ничего не получилось :(
Спасибо. Все получилось – ставил на винду.
Хорош Zend_Tool, да еще сыроват. К сожалению, он не совместим с PHPUnit 3.4