Статьи
Портфолио
Друзья
Контакты

Последние статьи

06.07.2010 Memcache и Zend: у Вас "падает" Memcache? 4 коммент.

06.07.2010 Collabtive - web-based project management software 2 коммент.

03.06.2010 Ускоряем ZF-проекты: автолоад и сборка в один файл 2 коммент.

Все

Категории

PHP 2 стат.

Zend Framework 25 стат.

Javascript 3 стат.

Другое 12 стат.

Книги 1 стат.

Украина 1 стат.

Все

RSS

Статьи

Комментарии

Портфолио

Облако тегов

программирование  Программы  портфолио  php  zend framework  Zend_Db  Smarty  Zend_Form  паттерны  javascript  niceforms  jQuery  Zend_Mail  веб  Google  Zend_Rest  Zend_View_Helper  zend casts  Zend_View  Zend_Layout  speedUp  интернет  Загрузчик фотографий  Flash  ВКонтакте  zend  localization  zend_translate  gettext  антон шевчук  подарки  Я читаю  Книги  sphinx  релизы 

Все

Реклама



Статистика



Rambler's Top100

Главная > Статьи > Zend Framework > Введение в Zend Framework: часть первая
03.08.08 Введение в Zend Framework: часть первая

Powered By Zend FrameworkЗдравствуйте, пожалуй пора написать свою первую статью на блоге. С чего-же я начну? Я тоже задавался этим вопросом и знаете, понял только одно, что начинать всегда тяжело, но ведь надо! А начну я с введения в известный PHP фреймворк — Zend Framework

 

 

Основные понятия


 

Во-первых, нужно сразу-же четко и ясно понять, что-же такое фреймворк? Фреймворк — это термин, имеющий очень размытое значение, в программировании так називают какую-то простую концептуальную структуру, используемую для решения сложных задач. Проще говоря это набор исходных файлов, написанных на определённом языке программирования, которые позволяют решить множество сложных задач программирования. С фреймворком разобрались. Поехали дальше!

 

Во-вторых, надо разобраться что такое Zend Framework и для чего он нам нужен? Zend Framework — это высококачественный фреймворк, который является библиотекой с открытым исходным кодом для разработки веб-приложений и веб-сервисов на базе PHP. Он лёгкий в использовании и при этом даёт мощный функционал, что позволяет построить современные, гибкие и защищенные веб-сайты. Zend Framework даёт в руки профессионала широкие возможности для построения качественных веб-приложений.

 

Собстно сабж


 

Системные требования Zend Framework:

  • PHP 5.1.4 или выше
  • поддержка модуля mod_rewrite на сервере 

Итак, приступим! Для начала скачайте сам фреймворк. Акуратненько положите его на уровень выше публичного каталога в папку «library» (предполагается, что Вы уже создали необходимый акаунт на Вашем локальном или удалённом сервере). Давайте сразу договоримся, что папка с Зендом будет называться «Zend». В итоге у Вас получится такая структура каталогов:

 

- web.site.name
| - library
| | + Zend
| |----
| + public_html
|----
Внимание! Следите за регистром в названиях каталогов: они должны быть такие-же как в Вашей PHP программе.

Далее нам нужно будет где-то разместить файлы нашего приложения. Назовём эту папку «application», положите папку в корень Вашего сайта (туда-же куда и «library») и сразу создайте в ней такие каталоги как:

 

«controllers» - здесь будут лежать контроллеры;

«models» - здесь будут лежать модели;

«views» - а здесь, скрипты вида;

 

Почему именно так? Дело в том, что данный фреймворк реализует множество паттернов программирования, одним из которых является паттерн MVC (Model-View-Controller).

 

Архитектура Модель-Вид-Контроллер очень ефективна для построения больших и сложных проектов, она чётко разделяет програмную часть сайта от его дизайна. Поверте на слово: обычный процедурный тип программирования не настолько удобен и ефективен, он не позволит Вам поддерживать громоздкую систему - проверено на личном опыте.

Архитектура Модель-Вид-Контроллер

Схема архитектуры Модель-Вид-Контроллер

После всех подготовлений Вы должны получить следующую структуру каталогов:

- web.site.name
| - application
| | + controllers
| | + models
| | - views
| | + filters
| | + helpers
| | + scripts
| |----
| - library
| | + Zend
| |----
| + public_html
|----

В каталоге public_html создайте файл «.htaccess» со следующим содержимым:

Эти директивы заставят сервер «заворачивать» все запросы на файл index.php, где они будут обрабатываться фреймворком. Файлы с перечисленными расширениями будут отдаваться пользователю напрямую. Если Вы хотите в некоторых каталогах отключить mod_rewrite, чтобы сервер не «заворачивал» запросы, то Вам нужно в них поместить файл «.htaccess» со следующим содержимым:

RewriteEngine off

Теперь создадим файл начальной загрузки, где мы сконфигурируем и запустим Zend Framework. Пропишем програмный код для файла index.php

 Заметьте, что я умышленно не вписал закрывающий код «?>». Это делается для того, чтобы не возникали сложные ошибки, которые связаны с редиректами с помощью функции header()

Теперь разберём по полочкам данный код. Следующие строчки указывают какие ошибки должны выводится интерпретатором и задаются региональные настройки.

Zend Framework расчитан на то, чтобы его файлы находились в include_path, поэтому в следующих строчках мы добавляем нужные директории.

Далее мы подключаем автозагрузчик классов Zend_Loader, который автоматически подключает вызванные классы. Для такой автоматики подключаемые классы дожны находиться в include_path.

 

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

 

P.S


 

Если Вы сейчас попытаетесь запустить наше приложение (открыв сайт в браузере), то Вы увидете сообщение о фатальной ошибке! Но не расстраивайтесь, мы просто еще не до конца сформировали наше приложение и потребуется еще кое-что сделать. Об этом я расскажу Вам в следующей статье, которая будет написана скоро… В это время я советую Вам почитать официальное руководство Zend Framework.

Теги:  программирование, php, zend framework

Другие категории:

■ PHP ■ Zend Framework ■ Javascript ■ Другое ■ Книги ■ Украина
Комментарии к статье
  Dred

29.11.08 18:49:54

У меня вот тоже есть блог, правда писать там так часто как вы не получается. Работа блин. Статья хорошая получилась.

  illusive

01.12.08 11:12:53

У меня вот тоже есть блог, правда писать там так часто как вы не получается. Работа блин. Статья хорошая получилась.

Спасибо. У меня тоже времени немного - учусь и работаю. Поэтому как могу так и кручусь

  Xtype

03.12.08 17:09:17

Хороший блог. Занёс в букмарки. Не бросайте начатое. Удачи Улыбается

  fra

06.12.08 11:48:03

Если Вы сейчас попытаетесь запустить наше приложение (открыв сайт в браузере), то Вы увидете сообщение о фатальной ошибке! Но не расстраивайтесь, мы просто еще не до конца сформировали наше приложение и потребуется еще кое-что сделать. Об этом я расскажу Вам в следующей статье, которая будет написана скоро... В это время я советую Вам почать официальное руководство Zend Framework.

Я думаю что даже если мы определим индексный контроллер и его шаблон, то нам все равно будет выдаваться фатал еррор, потому что в index.php нужно заменить это frontController->setControllerDirectory('./application/controllers'); на это frontController->setControllerDirectory('../application/controllers');

  fra

07.12.08 10:25:02

А все это происходит потому, что нужно если писать статьи, то писать их самостоятельно, и мсходники копипастить свои, а не хабрить с http://habrahabr.ru/blogs/php/31168/ в примерах которого index.php лежит на одном уровне с application.

  illusive

07.12.08 10:41:12

А все это происходит потому, что нужно если писать статьи, то писать их самостоятельно, и мсходники копипастить свои, а не хабрить с http://habrahabr.ru/blogs/php/31168/ в примерах которого index.php лежит на одном уровне с application.

Ваши обвинения не обоснованы. Копипастил я свои исходники, с моих первых проектов на ZF, когда application лежала на одном уровне с index.php (просто статью я собрал не с проекта, который является цельным и рабочим, а с разных проектов, в которых позже, структура каталогов поменялась, поэтому неточности могут быть). Я тоже с чего-то начинал, чего-то читал и естественно материал может быть несколько похожым на другие статьи.

Материал поправлю позже, спасибо за замечание.

  fra

09.12.08 13:47:30

Ваши обвинения не обоснованы.

Прими мои извенения. Продолжай дальше.

  Wintererum

16.03.09 10:50:36

Хорошая статья. Спасибо.

  illusive

16.03.09 12:23:49

Хорошая статья. Спасибо.

Пожалуйста Подмигивает

  Сергей

30.03.09 13:17:50

Есть предложение: вместо Zend_Loader::LoadClass(class_name) для каждого используемого класса фреймворка один раз в индексном файле вызывать Zend_Loader::registerAutoload().

Возможно, я что-то не учел )

  illusive

30.03.09 13:33:11

Имхо, Zend_Loader::registerAutoload() - жрет много ресурсов и я изначально хотел, чтобы новички не приучивались это использовать...

  Скакунов Александр

03.07.09 14:32:56

Я пришёл к тому, что папку library/Zend имеет смысл вынести ещё на один уровень выше (или вообще вне DocumentRoot), чтобы другие Zend-проекты тоже могли использовать ту же либу, и вам не приходилось тягать лишние 1.5 тысячи файлов в каждом проекте.
 - web.site.name

|   - library
| | + Zend
| | + some_other_useful_php_libraries (Doctrine, Propel, Symfony, etc.)
| |
| + zend_project_1
| + zend_project_2
| + zend_project_3
  illusive

04.07.09 09:46:41

Это конечно хорошо, но разные проекты могут работать под разными версиями Зенда, а его обновление без минимального тестирования проекта может повлечь за собой неприятности. ИМХО, шкурка вычинки не стоит.

 

А вообще, в идеале, было бы неплохо сделать Zend Framework, как php extension

  Скакунов Александр

05.07.09 21:36:29

Что скажешь по поводу моей статьи?

  denis

05.08.09 08:43:04

Если Вы сейчас попытаетесь запустить наше приложение (открыв сайт в браузере), то Вы увидете сообщение о фатальной ошибке! Но не расстраивайтесь, мы просто еще не до конца сформировали наше приложение

))))))))))

 

Чувак, а нафига ты писал статью тогда, если не работает код? Заканчивать надо до логической точки наверное.

  illusive

02.10.09 09:03:34

Как-то не заметил 2 последних комментария

@denis

Чтобы заинтриговать читателя, чтобы он прочитал вторую часть статьи

  bkmz

24.06.10 18:05:23

Автору рєспект и уважуха. Не сразу въехал в то что напмсано но покрайней мере это лучше чем ничего. Скажу за себя за остальных говить не буду - я свой первый шаг сдела с этой статьи, а не с манула зенда хотя мне его оч многие сватали как первый старт. Спасибо за труд.

  illusive

24.06.10 19:02:54

Спасибо за позитивный отзыв! Меня всегда подогревают такие комментарии Улыбается

Так заскучал за блогом) Недавно написал статью Ускоряем ZF-проекты: автолоад и сборка в один файл и уже готовлю следующую..) Так что ждите!

Оставить свой комментарий

 
Статьи | Портфолио | Друзья | Контакты
Идея и мозги: Васильев Андрей © 2008-2010 Web-Blog Кисточка и фантазия: Зелинский Богдан