Использование Zend_Tool

Zend Framewrok Application

Zend Framework таки идет по пути старших братьев по разуму – Zend Tool поможет Вам в быстром создании проекта на основе ZF.


Для начала нам понадобится скачать Zend Framework с сайта разработчиков, или воспользоваться SVN репозиторием (из всего этого добра нам нужна папка bin и library/Zend, остальное пока не понадобится):

~$ 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)

У нас должна получиться следующая структура каталогов:

htdocs
|-- bin
|   |-- zf.bat
|   |-- zf.php
|   `-- zf.sh
`-- library
     `-- Zend

Теперь открываем консоль идем в директорию htdocs и набираем:

# не забываем chmod a+x ./bin/zf.sh
~$ ./bin/zf.sh create project ./

Примечание: утилита тестировалась под Linux, есть вероятность, что под Windows тоже будет работать (используйте zf.bat)

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

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

Идем дальше – создадим контроллер и экшены:

# создаем контроллер users и два экшена
~$ ./bin/zf.sh create controller users
~$ ./bin/zf.sh create action login users
~$ ./bin/zf.sh create action logout users

Смотрим на результат (файл UsersController.php):

<?php
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 скрипт:

<br /><br /><center>View script for controller <b>users</b> and script/action name <b>login</b></center>

Примечание: Если папка public не является корневой – то добавьте в файл «/public/.htaccess» правило «RewriteBase /public/» после «RewriteEngine On»

Кроме данного функционала еще есть следующие “возможности”:

  • Создание класса для юнит тестов, включение/выключение оных – провайдер test не распознается утилитой
  • Создание view – ругается и ничего не создает, исправление ошибки в классе влечет за собой еще больше ошибок

В TODO у разработчиков:

  • Генератор моделей – хотелось бы посмотреть на организацию “правильной” модели с учетом последних изменений в фреймворке
  • Генератор форм – интересно, должна же быть связь с моделью, думаю будет вкусно

Полезные статьи:

Другие посты на эту тему

15 Responses to “Использование Zend_Tool”

  1. Jeje says:

    Отличная идея

  2. Генератор моделей и форм, вот действительно то что интересно будет посмотреть…

  3. progg.ru says:

    Использование Zend_Tool…

    Thank you for submitting this cool story – Trackback from progg.ru…

  4. Snowcore says:

    Кажись, запахло Symfony :)
    Весьма удобная функциональность!

  5. quard says:

    А как быть, если уже структура есть с модулями, генератор классов сможет понять куда вставить новый файл? или только для стандартной структуры подойдет?

  6. Lekz says:

    Привет. А что значит “что-то сборка у них глючновата”? Какие бока?

    • Привет. На момент написания статьи была доступна версия 1.8.0 beta, у нее генератор отказывался работать вовсе, в SVN уже лежала рабочая версия, и именно она попала в релиз…

  7. maxx says:

    Пасиба за статью. Только начал изучать ZF. Очень помогло.

    P.S. Небольшой оффтоп. Мог бы написать небольшую статейку о том, что находится в папочке tests, для чего это и с чем едят.

  8. если Вы true-линуксойд и частенько создаете проекты на ZF – то закиньте файл zf.sh в /usr/bin

    Не получится так. Разве что закидать в /usr/bin zf.sh в паре с zf.php. А лучше всего на мой взгляд:
    - держать Zend Framework отдельно от всего остального
    - пути к library/Zend и к extras/library/ZendX прописать в include_path
    - в /usr/bin создать символическую ссылку (например zf) на bin/zf.sh

  9. MegBegb says:

    Неплохой генератор.
    Что же касается генерации форм и моделей, то это возможно с помощью Doctrine ORM.
    Для генерации используются yaml или xml файлы с основной стукрурой будущей модели, типа

    User:
    tableName: user
    columns:
    id:
    type: integer(8)
    primary: true
    autoincrement: true
    username: string(255)
    password: string(255)

    Проводим генерацию, и уже можем использовать. Например, чтобы создать нового пользователя

    $user = new User();
    $user->username = 'Вася Пупкин';
    $user->password = 'pass';
    $user->save();

    Что интересно, возможна генерация между jaml, моделями и БД в любую сторону (модели из структуры БД, БД из jaml и т.п.)

  10. Андрей says:

    Здраствуйте, может кто нить описать или кинуть ссылку, как запустить zf.bat(под винду), а то я уже 4 часа бьюсь об стенку и никак.

    Если можна поподробнее, че я не так делаю.

    Спасибо

  11. CJ Slade says:

    to Андрей
    1. Добавь путь к папке c php в PATH:
    “Панель Управления->Система->Дополнительно/Переменные Среды”
    2. Добавь путь к library в include_path (php.ini)

    В консоли проверяешь:
    >zf show version

    Также рекомендую использовать PHP CLI для запуска подобных скриптов.

  12. Иван says:

    У меня возникла та же проблема, вроди как внял инструкциям, но ничего не получилось :(

  13. ion says:

    Спасибо. Все получилось – ставил на винду.

  14. Snowcore says:

    Хорош Zend_Tool, да еще сыроват. К сожалению, он не совместим с PHPUnit 3.4

Leave a Reply

Copyright © 2007-2010, Anton Shevchuk. Powered by WordPress