Азы работы с Zend Framework (1/3) - Установка и создание проекта
Доброго времени суток пользователи ruseller.com! Я счастлив, представить вам серию уроков по одному из самым популярных PHP фрэймворков - Zend Framework. Вы конечно же не раз слышали об этом мощном инструменте разработки web-приложений, об MVC и прочих фичах!.. Настало время практики.
Если вы впервые слышите о Zend Framework, то советую вам пробежаться по статье "10 неотразимых причин использовать Zend Framework", которая ярко демонстрирует достоинства данной библиотеки.
Ещё пару слов от себя перед тем как начнём... Я считаю что Zend Framework это прекрасный инструмент для создания профессиональных проектов на PHP. Он разработан самими создателями языка PHP и используется не только в “домашних” целях, но и при разработке крупных проектов.
Для тех из вас, кто считает, что писать проекты на Zend Framework легче, чем на чистом PHP, я сразу хочу сказать что это не так. Поначалу будет очень сложно, потому что вам предстоит понять новую концепцию архитектуры веб-приложений MVC и многое другое. В общем приготовьтесь посмотреть на PHP с другой стороны! С той, с которой вы его ещё не видели!
Ну что же, лучшая теория это практика! Так что вперёд!
Вступление
На момент написания статьи, использовалась версия Zend Framework 1.11.4
В этом уроке мы познакомимся с Zend Framework, а именно:
- Установим и сконфигурируем все необходимые инструменты (Zend Tool, настроим виртуальный Host);
- Определимся с проектом, который будем реализовывать;
- Познакомимся с концепцией MVC;
Что необходимо для функционирования Zend Framework:
- PHP 5.2.4 (или любая более новая версия);
- Поддержка mod_rewrite web сервером;
- Поддержка .htaccess (для того, чтобы активировать поддержку .htaccess, в конфигурационном файле Apache httpd.conf, строку AllowOverride None, необходимо заменить на AllowOverride All)
Установка Zend Framework и Zend Tool
1. Скачиваем последнюю версию Zend Framework
- Скачайте последнюю версию пакета Zend Framework 1.11.X Full;
- Извлекаем из всё содержимое архива;
2. Переносим содержимое архива
- Копируем разархивированную папку в каталог C:\wamp\bin и переименовываем её например в zf;
- Теперь содержимое фрэймворка можно найти по адресу C:\wamp\bin\zf. Если вы всё сделали правильно, то по данному адресу у вас должны располагаться такие каталоги: bin, demos, externals, extras, librarz и т.д.
3. Конфигурируем Zend Tool
- Нажмите правый клик на иконке «Компьютер» в панели пуск (Windows 7) и выберите пункт «Свойства».
- В левой части панели выберите пункт «Дополнительны параметры системы».
- В открывшемся окне нажмите кнопку «переменные среды».
- Далее в списке системные переменные, ищем переменную Path и делаем на ней двойной клик. Перед вами должно открыться следующее окно.
- Нажимаем на содержимое поля «значение переменной», перемещаемся в конец строки;
- Ставим точку с запятой ";" (без кавычек);
- Далее вписываем адрес "C:\wamp\bin\zf\bin" (без кавычек);
- Жмём OK;
- После этого не помешает перезагрузить компьютер, чтобы все изменения нормально встали.
4. Проверка работы Zend Tool
- Откройте командную строку. Нажмите клавиши Windows->R. В открывшемся окне наберите команду cmd;
- В командой строке наберите zf и нажмите Enter. После этого перед вами появится список всевозможных команд, некоторые из которых мы рассмотрим в данном уроке. Если этого не произошло, значить вы неверно сконфигурировали Zend Tool.
5. Прописываем Zend Frameword в php.ini
- Откройте файл php.ini
- Найдите строку include_path
- Впишите следующее содержание:
; Zend Framework
include_path = ".;c:\wamp\bin\zf\library" - Перезапустите Apache
Вот и всё. Мы только что установили Zend Framework, сконфигурировали Zend Tool и готовы приступить к созданию нашего нового проекта.
Проектируем приложение
Для демонстрации концепции Zend Framework продемонстрируем его работу на небольшом примере. Создадим картотеку любимых видео фильмов. Работу с базой, я продемонстрирую в следующем уроке, но для общего сведения структуру приведу сейчас. Для хранения данных нам потребуется следующая таблица:
id integer Not Null Primary key
title varchar(100) Not Null
director varchar(100) Not Null
Так же нам понадобятся следующие страницы:
Главная - на которой будет отображать список фильмов
Добавление записи - страница, содержащая форму добавления нового фильма
Редактирование записи - страница редактирования фильма
Удаление записи - удаление фильма из БД
Создание проекта
Откройте терминал или консоль и перейдите в каталог, который является корнем вашего сайта (root папку). В моём случае это C:\wamp\www. Если вы являетесь обладателем Linux или его дистрибутивов, до и после создания проекта убедитесь, что для вашего пользователя и web сервера были выставлены права на запись.
zf create project zfdemo
Если теперь вы посмотрите на содержимое корневого каталога сайта, то уведете множество папок и файлов, которые были созданы инструментом Zend Tool. Этот на первый взгляд хаос является структурой Zend Framework проекта. Без Zend Tool вам бы пришлось создавать всё это руками.
Папка application это ядро нашего будущего сайта. Там будут располагаться все коды, отвечающие за работу web-приложения. В каталоге application вы найдёте другие папки концепция которых уже давно на слуху: controllers, models, views.
Каталог public это корень вашего сайта, а это значит, что нам необходимо создать виртуальный хост, в настройках которого будет указано, что каталог public является корневым. Так же в каталоге public будут содержаться все изображения, javascript скрипты, css стили и прочие файлы.
Папка library может содержать саму библиотеку Zend, но не только. Туда можно закидывать любые другие библиотеки, которые могут понадобиться вам при разработке вашего сайта.
Все остальные каталоги будем рассматривать по мере надобности.
Настройка виртуального хоста
Для более подробного ознакомления с созданием виртуального хоста рекомендую ознакомиться с статьёй "Настройка виртуального хоста в WAMP"
Для настройки виртуального хоста выполните следующие шаги:
- Откройте конфигурационный файл Apache httpd.conf.
- Уберите комментарий со строки со следующим содержанием: Include conf/extra/httpd-vhosts.conf
- Если вы находитесь в каталоге conf, перейдите в каталог extra и откройте файл httpd-vhosts.conf
- Внесите в файл httpd-vhosts.conf следующие строки и сохраните файл:
<VirtualHost *:80> DocumentRoot "C:/wamp/www/zfdemo/public" ServerName zfdemo.web SetEnv APPLICATION_ENV development <Directory "C:/wamp/www/zfdemo/public"> Options Indexes MultiViews FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
Отправьтесь в c\windows\system32\drivers\etc\hosts или /etc/hosts если у вас Linux и внесите строки:
127.0.0.1 zfdemo.web 127.0.0.1 www.zfdemo.web
После перезапуска Apache наш сайт должен быть доступен по адресу www.zfdemo.web
Если вы не увидите следующей картинки, то значит, что что-то не так с путями или правами:
Пару слов о средах разработки
Теперь я бы хотел пояснить строку SetEnv APPLICATION_ENV development, которую мы вписали в наш виртуальный хост.
Среды разработки предназначены для того, чтобы организовать работу в команде или просто обеспечить удобную работу над созданием Zend приложения. Каким образом? Допустим у вас имеется хостинг, где есть база данных с названием hostdb, пользователем hostdbuser, и паролем hostdbuserpass. А на локальной машине у вас база homedb, пользователь hostdbuser и пароль hostdbuserpass. Для того чтобы Zend приложение понимало откуда брать данные автоматически когда оно запускается на локалке или на сервере необходимы среды разработки. По умолчанию в Zend Framework 3 среды. production, staging и development (хотя мы можем создавать и свои собственные). Если вы внимательно посмотрите в содержание application.ini то увидите записи следующего вида: [development : production]. Это означает, что среда разработки development наследуются от среды разработки production (которая в каждом Zend проекте запускается по умолчанию). Значит, если production запускается по умолчанию, то целесообразно разместить данные для подключени к БД от сервера именно в эту секцию, а от домашнего в секцию development. Что при этом происходит:
Вариант 1. На локальном хосте
- Zend приложение загружается, ищет среду разработки.
- Виртуальныей хост, который мы настроили говорит, что среда разработки development.
- Zend подгружает секцию development, где находятся данные для работы с локальной БД
Вариант 2. На хостинге
- Zend приложение загружается, ищет среду разработки - не находит.
- Zend по умолчанию определяет среду разработки production.
- Zend подгружает секцию production, где находятся данные для работы с БД на хостинге.
Надеюсь, теперь вам более ясно что такое среды разработки.
Знакомимся с контроллерами, экшенами и вью
В Zend Framework контроллеры это специальные классы со строгим правилом наименования. Тут вообще всё очень строго и сурово. К примеру имя контроллера должно быть составлено следующим образом: {Имя_контроллера}Controller. К примеру: IndexController, ErrorController, UserController и т.д. Название контроллера должно начинаться с заглавной буквы. Все контроллеры должны располагаться в папке application/controllers.
Каждый контроллер включает в себя набор действий или другими словами actions. Action это функция с модификатором доступа public, которая представляет собой страницы вашего сайта. Именуются они тоже строго: {имя_действия}Action. К примеру indexAction(), printAction() и т.д. Название действия начинается с прописной буквы!
Давайте экспериментировать:
Зайдите в папку application/controllers. Внутри этой папки должно быть 2 файла. IndexController и ErrorController. Эти контроллеры были сформированы когда вы создавали проект при помощи Zend Tool. Откройте IndexController.
<?php class IndexController extends Zend_Controller_Action { public function init() { /* Initialize action controller here */ } public function indexAction() { // action body } }
Мы видим, что в IndexController есть 2 метода: _init() и indexAction. Функция init вызывается каждый раз при запуске контроллера. indexAction() это функция представляющая из себя страницу сайта. Чтобы убедиться в этом внесите в функцию indexAction следующую строку:
echo "Я в IndexController, в indexAction!!!";
Чтобы достучаться до этого action пройдите по адресу www.zfdemo.web/index/index. Данная запись означает, что мы обращаемся к контроллеру index и действию index. Но помимо нашей строки вы видите ещё какой-то материал. Это происходит потому что у каждого action есть свой view (или представление).
Пройдите в папку application\views\scripts\index и откройте файл index.phtml
<style> a:link, a:visited { color: #0398CA; } span#zf-name { color: #91BE3F; } div#welcome { color: #FFFFFF; background-image: url(http://framework.zend.com/images/bkg_header.jpg); width: 600px; height: 400px; border: 2px solid #444444; overflow: hidden; text-align: center; } div#more-information { background-image: url(http://framework.zend.com/images/bkg_body-bottom.gif); height: 100%; } </style> <div id="welcome"> <h1>Welcome to the <span id="zf-name">Zend Framework!</span></h1> <h3>This is your project's main page</h3> <div id="more-information"> <p><img src="http://framework.zend.com/images/PoweredBy_ZF_4LightBG.png" /></p> <p> Helpful Links: <br /> <a href="http://framework.zend.com/">Zend Framework Website</a> | <a href="http://framework.zend.com/manual/en/">Zend Framework Manual</a> </p> </div> </div>
В этом файле находится всё то, что вы видите на странице. Удалите всё содержимое файла index.phtml и перезагрузите страницу www.zfdemo.web/index/index или просто www.zfdemo.web/index/ т.к. indexAction запускается по умолчанию. Теперь на странице должно быть только наше сообщение “Я в IndexController, в indexAction!!!”
Общая концепция работы по схеме Model-View-Controller:
- Контроллер вызывает модель;
- Модель вытаскивает данные из базы и возвращает в контроллер;
- Контроллер обрабатывает полученные данные и передаёт в view (представление);
- Представление выводит все данные;
Для того чтобы реализовать наш проект нам необходимо создать несколько action.
Создание Actions
Откройте консоль или терминал и пройдите в папку, где содержится ваш сайт (Обязательно именно в эту папку). В нашем случае это C:\wamp\www\zfdemo. Набирайте команды:
zf create action add index zf create action edit index zf create action delete index
Данные записи дословно переводятся так: Zend Framework, пожалуйста создай action с именем add в контроллере index и т.д. :) Помимо добавления записей в IndexController.php Zend Tool так же создаст для вас необходимые view каталоги и файлы. Можете убедиться в этом сами. Теперь вы можете обращаться к этим страницам по адресам: www.zfdemo.web/index/add, www.zfdemo.web/index/edit, www.zfdemo.web/index/delete
Если вы всё сделали правильно, то теперь у вас должен быть настроен Zend проект к реализации которого мы вернёмся в следующем уроке.
На этом я пожалуй закончу наш урок-знакомство. Настраивайте Zend Framework и всё необходимое для его работы. Спасибо за внимание.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/L70qEkOGbZ4/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Всегда храни верность своему начальнику - следующий, может быть еще хуже... |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.