• 'Hello world' и Zend Framework

    by  • 20.02.2010 • Zend Framework • Комментарии [9]

    logopost 'Hello world' и Zend Framework

    Буквально несколько дней назад решил я освоить какой-нибудь PHP фрейворк, много статей и обзоров прочитать пришлось, чтобы остановиться все же на Zend Framework’е. Как пишут почти везде, что начало в нем самое сложное, дальше будет все намного понятнее. У меня для того, чтобы заработало первое приложение, которое выводит лишь строчку всем известную ‘Hello world’, ушел целый вечер. Хватит слов, ближе к делу.

    Первым делом нам понадобиться конечно же web-сервер, подойдет и Denwer, и XAMPP, и Zend Server и думаю еще много чего подойдет нам.

    Затем нам нужно скачать сам фреймворк, либо с официального сайта (надо будет пройти регистрацию), либо с моего сайта (последняя на момент публикации этой заметки версия).

    Теперь построим структуру папок по определенной иерархии. Многие советуют папки с классами, папку с настройками выносить на уровень выше, чем находится Root директория web-сервера, но на многих хостингах не имеется возможности это реализовать, поэтому будет организовывать все в папке проекта. Вот что у нас должно получиться в итоге (картинка кликабельна). catalog tree 150x150 'Hello world' и Zend Framework

    Осталось теперь разархивировать скачанный архив и из папки library скопировать папку Zend в папку library нашего проекта и переходить непосредственно к кодингу.
    Нам потребуется, если мы работаем с сервером Apache, установленный и включенный модуль

    mod_rewrite, чтобы все запросы к серверу обрабатывались одним файлов, в данном случае index.php. У меня проект называется zend-hello, если у вас отличается имейте это ввиду, чтобы не допустить ошибок при составлении путей.

    Чтобы все запросы перенаправлялись одним файлов нам нужно указать это в файле zend-hello/.htaccess

    1
    2
    3
    4
    RewriteEngine on
    RewriteRule .* index.php
    php_flag magic_quotes_gpc off
    php_flag register_globals off

    Первые две строчки включают mod_rewrite и перенаправляют все запросы соответственно. Третья и четвертая устанавливают нужные для безопасности параметры php.

    И еще нам нужно сразу предусмотреть возможность отдавать сервером картинки и *.css файлы в обход index.php. Мы об этом позаботились и заранее разместили эти файлы в папке public. Создадим теперь файл zend-hello/public/.htaccess с таким содержимым.

    1
    RewriteEngine off

    Тем самым отключив mod_rewrite для этой папки.

    Переходим к главному файлу нашего проекта, который делает всю «черную» работу.
    zend-hello/index.php

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
        error_reporting(E_ALL && E_STRICT);
        set_include_path('.' . PATH_SEPARATOR . './library/'
                . PATH_SEPARATOR . './application/models/'
                . PATH_SEPARATOR . get_include_path());
        //включаем в путь папки из нашего проекта
        //PATH_SEPARATOR используется для разделения папок в пути
        //для *nix систем - это ':', для win - ';'
        include "Zend/Loader.php";
        Zend_Loader::loadClass('Zend_Controller_Front');

        //установка контроллеров
        $frontController = Zend_Controller_Front::getInstance();
        $frontController->throwExceptions(true);
        $frontController->setControllerDirectory('./application/controllers');

        //запускаем
        $frontController->dispatch();

    Если что-то не понятно, а для новичка должно быть непонятно почти все, то не расставайтесь, все поймем дальше на примерах.
    Важно пока лишь для нас знать, что закрывающийся php тег НЕ надо ставить

    Теперь нам надо настроить контроллер, чтобы он отобразил нам заветную фразу.
    zend-hello/application/controllers/IndexController.php

    1
    2
    3
    4
    5
    6
    7
    <?php
    class IndexController extends Zend_Controller_Action {
        function indexAction() {
            $this->view->title = "Hello world's page";
            $this->view->header = "Hello, world!";
        }
    }

    Здесь мы присваиваем переменной title название нашей страницы, а переменной header заветную фразу. Отсалось настроить виды (views), чтобы выводить информацию.

    Файл zend-hello/application/views/scripts/index/index.phtml

    1
    2
    3
    4
    5
    6
    7
    8
    <html>
        <head>
            <title><?php echo $this->escape($this->title); ?></title>
        </head>
        <body>
            <h1><?php echo $this->escape($this->header); ?></h1>
        </body>
    </html>

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

    Эта заметка не претендует звание подробного мануала по разработке высоконагруженных приложений на Zend Framework. Но в самом начале она может подтолкнуть на дальнейшее изучение данного фреймворка. Спасибо за внимание и удачи вам в веб-программировании и не только.

    *При написании заметки использовалась Netbeans IDE для PHP, скачать бесплатно которую можно тут

    Комментарии к "'Hello world' и Zend Framework"

    1. Buranich
      14.03.2010 at 07:57

      С ветки 1.8 есть возможность использовать Zend_Application для старта приложения. Собственно, ей и надо пользоваться.

    2. admin
      14.03.2010 at 12:40

      2Buranich: Спасибо за замечание, учту при дальнейших заметках.

    3. 16.06.2010 at 21:46

      Спасибо, заработало.
      Не могли бы Вы подробнее расписать этот блок кода:
      set_include_path(‘.’ . PATH_SEPARATOR . ‘./library/’
      . PATH_SEPARATOR . ‘./application/models/’
      . PATH_SEPARATOR . get_include_path());
      //включаем в путь папки из нашего проекта
      //PATH_SEPARATOR используется для разделения папок в пути
      //для *nix систем — это ‘:’, для win — ‘;’

      • 17.06.2010 at 10:22

        на самом деле все просто и этими строчками мы лишь задаем пути, в которых zend будет искать файлы, library — папка, где лежит сам фреймворк, models — в последних версиях писать не обязательно, если модели названы, придерживаясь стандарта

        этот пример не очень удачный, в последних версиях старт приложения на ZF немного отличается, что подмечено в первом комментарии к этой заметке

    4. Макс
      19.01.2011 at 02:50

      по-больше бы таких статей! )

    5. 08.09.2011 at 14:31

      Хорошая статья для новичков, спасибо!)

    6. Серж
      10.09.2011 at 22:35

      «Гвозди бы делать из этих людей ….»
      Перемучил штук 8 туториалов, … и не прояснилось.

      А тут — молодца! Кратко, точно, полно, понятно, заработало с первого раза.
      Спасибо ОГРОМНОЕ.

      Возможно будет уместна корректировочка-дополнение для не очень внимательных. Вместо:
      «Создадим теперь файл zend-hello/public/.htaccess с таким содержимым.»
      Написать:
      «Создадим теперь ЕЩЕ В ПАПКЕ zend-hello/public/ файл zend-hello/public/.htaccess с таким содержимым.»
      А то там про один .htaccess, потом сразу про другой.

      ЕЩЕ РАЗ — СПАСИБО!

      • 11.09.2011 at 00:22

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

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

      • 11.09.2011 at 00:25

        Оффтоп, но будет вам очень полезен. Не используйте данную структуру, она устарела, начиная с версии 1.8.

        Чтобы не было мучительно больно переучиваться.

    Добавить комментарий

    Ваш e-mail не будет опубликован. Обязательные поля помечены *