Молодогвардейцев 454015 Россия, Челябинская область, город Челябинск 89085842764
MindHalls logo

Zend Framework 2 + Doctrine. Настройка и структура проекта

Привет всем! С этой статьи я начну погружение в удивительный мир Zend Framework 2. Не могу точно сказать, насколько глубоко уйду, но настройка и простейший пример реализации будут точно. С первого взгляда Zend для меня показался просто жуткой бессмыслицей. Зачем прятать работу с базой данных в такую замысловатую ООП оболочку? Нам давали задание написать простейший каталог интернет магазина и там мы вполне обошлись безо всяких фреймворков.

Но все мои возмущения улетучились, когда этап настройки миновал и началась, непосредственно, реализация. Фреймворки — это круто! Стоит один раз пройти через круги ада и понять, как все работает и сразу круто! Давайте вступим на самый первый круг и поймем, что это вообще такое и что здесь происходит.

Doctrine project

Doctrine — это специальный и очень обширный набор библиотек для PHP версии 3.0+, который предназначен для обеспечения абстрактного доступа и управления базой данных. Главная особенность для нас — наличие у Doctrine собственного объектно-ориентированного языка SQL. Другими словами, больше никаких select, update и delete, только классы, поля и методы. Всю работу с базой Doctrine берет на себя.

Я использую Doctrine версии 2. Вот небольшой пример того, как можно добавить новый город в базу данных.

$manager = $this->getEntityManager();
$city = new City();
$city->setName('Chelyabinsk');
$manager->persist($city);
$manager->flush();

Это намного проще, чем прямые SQL запросы и полностью соответствует концепции ООП. Подробнее о том, как работают эти и многие другие методы я напишу в следующих статьях, где буду рассматривать конкретно реализацию проекта и прочие тонкости.

Zend Framework 2

Из названия можно сделать вывод, что это некий программный каркас на языке PHP, разработанный фирмой Zend. Предназначен для упрощения разработки веб-приложений, будь то личный бложик или крутой интернет-магазин. Зенд подходит для очень обширного списка задач. В основе используется принцип Model-View-Controller. Еще из важных особенностей можно упомянуть то, что PHP код полностью объектно-ориентированный и реализованы компоненты для интеграции приложения со сторонними сервисами(например YouTube).

Настройка на локальном сервере

Существует два варианта. Первый — честно скачать с официального сайта Zend, скачать Doctrine и честно установить каждый из них. Второй — скачать приложенный мной ниже архив с настроенными Zend Framework 2 и Doctrine 2.

Плюсы второго варианта в простоте, а минусы в том, что версия будет не самая свежая, но он работоспособный на все 100%. Для тренировки самое то. Я тестировал на Linux Ubuntu 16.04, Windows 7 x64 и Windows 10 x64. Необходим PHP версии не ниже 5.3.0. А лучше всего будет установить 5.6, в этом случае работать будет точно.

Процесс установки

  1. скачать архив с фреймворком.
  2. распаковать его в папку со своим сервером. Для lampp это /lampp/htdocs/. После этого вы сможете зайти на адрес localhost/ZendFramework2/public и увидеть стартовую страницу.

welcome to ZendFramework2 page

Структура простейшего проекта

Прежде чем писать крутые проекты нужно хорошенько разобраться в том, как устроена их структура.

Рассмотрим на примере. Пусть в базе данных одна единственная таблица с городами под названием «city». Наша задача — написать веб-приложение, которое будет содержать интерфейс для добавления/удаления/редактирования городов в базе данных. В соответствии с принципом MVC мы должны создать модель, представление и контроллер. Пойдем по порядку.

  1. Модель, она же сущность или Entity в терминах Doctrine представляет собой php файл с описание класса «город». Расположена сущность в /ZendFramework2/module/Application/src/Application/Entity. О том, как именно написать такой класс я расскажу в статье, посвященной реализации проекта.
  2. Представление — это phtml страничка, которую увидит пользователь нашего приложения. Она расположена в /ZendFramework2/module/Application/view/application/city. Последний каталог назван в честь сущности, для которой создается представление.
  3. Контроллер — это самая важная часть проекта, содержащая в себе всю логику. Он находится в /ZendFramework2/module/Application/src/Application/Controller. Контроллер это тоже класс, в котором методами будут выступать действия пользователя. Собственно, добавить/удалить/редактировать.

Заключение

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

В следующий раз я покажу реализацию простейшего проекта с таблицами «города», «области» и «страны» и расскажу про связи между сущностями.  А на сегодня все, спасибо за внимание!

  • Спасибо. Надеюсь на продолжение погружения в Zend Framework 2.
    Давно испытываю желание перестать писать на гольном PHP (хоть уже и накопил много наработок на все случаи жизни, и половина выполнения новой задачи заключается в ctrl+C — ctrl+V). Боюсь только отдать много времени на изучение проекта, который перестанет развиваться через пару лет, а потом потеряет актуальность

    • Кузьминых Кирилл

      Я не возьмусь говорить за всемирную и общеизвестную актуальность зенда, но знаю пару крупных фирм в своем городе, которая успешно держит его на вооружении и не собирается отказываться

  • Не как не могу найти время для Zend Framework. Возможно с Zend Framework я бы писал намного быстрее php скрипты
    Спасибо, Кирилл, за интересную статью.