PHP фреймворк — Zend Framework

Zend QuickStart

PHP фреймворк — Zend Framework

Zend Framework — это свободный каркас на PHP для разработки веб-приложений и веб-сервисов.

Каркас пытается следовать духу PHP, предоставляет простые интерфейсы и мощную функциональность для разработки приложений. Он предоставляет расширения для построения современных, быстрых и безопасных сайтов.

Основывается на идеях MVC. Разрабатывается компанией Zend, являющейся разработчиком самого PHP.

Помимо MVC-компонентов Zend Framework содержит множество библиотек, полезных для построения приложения. Также есть компоненты для интеграции со сторонними сервисами — например, YouTube, del.icio.us и многими другими. Начиная с версии 1.6 поставляется с JavaScript фреймворком Dojo, а также включает в себя компоненты для работы с ним.

Почему стоит использовать именно Zend Framework как первый Framework?

Ответ прост — нет чёткого ответа. Зато есть много вопросов:

  1. Что стоит использовать при разработке веб-приложений?
  2. Почему люди делают предпочтение следующим вещам: простому PHP(poor PHP), CMS, CMF, framework?
  3. Как выбрать оптимальный Инструмент для своих разработок?
  4. Почему нет 1-ой вещи, которую изучил и не паришься по поводу Выра правильного Инструмента?
  5. Какой PHP фреймворк использовать?

(МОЁ ИМХО)
В общем со своим опытом могу сказать,нет даже ЗАЯВИТЬ, что Мне импонируют бесплатные инструменты — это раз.
Тут можно спорить, можно это принять, но есть преимущество у бесплатных инструментов. Например сейчас прослеживается тенденция к уменьшению количества самописных CMS, что не может не отразиться на улучшении качества бесплатных CMS :).
Я много раз видел, как тот или иной проект начатый 1-3 и даже большим количеством людей УМИРАЕТ. Каким бы не был хорошим и нужным проект, он умирает по разным причинам. И знаете, что? Я старался всегда выбирать такие проекты, где комьюнити по больше, где разработчиков и качество их кода лучше, где проект уже реализовал серьёзную часть функционала, так что даже если Он будет брошен Ты своими руками «доточишь» его.
Желательно, что бы было понимание кода проекта. А так может получиться как у Меня с вебкой к биллингу, когда Я по сути латал и дописывал в течении 3-х лет старый код, вместо того что бы написать свой с нуля ( что легче, чем насиловать чужой страшный, старый и небезопасный).

  • Мне импонируют бесплатные инструменты
  • Выбирать стоит такой проект, который через 2-4 года не загнётся, Мы же мазохисты переучиваться по сто раз?
  • Если выбор огромен, то тогда уже стоит обращать внимание на: быстродействие (эффективность использования данного инструмента); удобство, документацию, срок обучения использования данного проекта; наличие сообщества,людей(желательно знакомых) у которых можно спросить и т.д.
  • Надо что бы проект не противоречил/насиловал мозг своими концепциями :)
  • Всегда можно сменить Инструмент, главное что бы это не было хобби или способ «отложить на завтра» разработку этим Инструментом.
  • Давайте действовать

Я не могу Вам ничего навязать. Я делюсь опытом и скажу, что каждый год увеличивается количество ядер, скорость памяти, скорость интерпретатора php, появляются новые технологии кеширования, идеи распределения нагрузок и дешевеют VPS/VDS/хостинг :).
Если Мы вспомним историю, то раньше писали на ассемблере. Потом придумали Си/С++, и хотя эти языки были медленнее чем ассемблер, сейчас потеря производительности намного меньше, чем скорость разработки на Си/С++ :)

Это Я к тому, что «сегодня» тяжёлый фреймворк, завтра — просто фигня по нагрузкам

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

Почему стоит использовать Zend Framework?

Итак на моё исследование в Сети от 09.2010
Я попытаюсь как можно больше цитат из Сети надёргать, что бы было понятно, что с Зендом можно работать, он если где-то и сливает, то не капитально, а если и капитально, то это еще ничего не значит :)

Моё первое Zend’овое

В Зенде у Нас разделение кода на три части — архитектура Model-View-Controller(MVC):
Модель – часть работающая с данными для вывода. Модель реализует бизнес-логику приложения и берёт на себя работу с БД.
Вид — части приложения, которые должны быть выведены на экран.
Контроллер — объединяет вместе Модель и Вид, определяя, какие именно скрипты модели и вида должны быть задействованы.

Это и облегчает разработку и масштабирование приложения.

Настроим nginx для Zend Framework

cat /etc/nginx/sites-enabled/dzen.sitel.org.ua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
server {
        listen          80;
        server_name site.org.ua www.site.org.ua;
# Most sites won't have configured favicon or robots.txt
# and since its always grabbed, turn it off in access log
# and turn off it's not-found error in the error log
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; root /var/www/site.org.ua/zend/public; }
 
# Rather than just denying .ht* in the config, why not deny
# access to all .invisible files
location ~ /\. { deny  all; access_log off; log_not_found off; }
location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico)$ {
                 root  /var/www/site.org.ua/zend/public;
 
            access_log        off;
            expires           30d;
            break;
        }
 location / {
                index  index.php index.html index.htm index.php;
                root  /var/www/site.org.ua/zend/public;
}
 
       location ~ \.php$ {
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param     SCRIPT_FILENAME      /var/www/site.org.ua/zend/public$fastcgi_script_name;
        include      fastcgi_params;
        }
}

Аналогичная настройка apache для Zend Framework

1
2
3
4
5
6
7
8
<VirtualHost *:80>
    ServerName site.org.ua
    ServerAlias www.site.org.ua
    DocumentRoot /var/www/site.org.ua/zend/public
    <Directory "/var/www/site.org.ua/zend/public">
        AllowOverride All
    </Directory>
</VirtualHost>

ЧПУ

Модуль контроллера Zend Framework, Zend_Controller, спроектирован с поддержкой ЧПУ. Для достижения этого все запросы должны перенаправляться на файл index.php. Такая схема также известна как паттерн проектирования Front Controller. Он проводит нас в центральную точку всех страниц приложения.

Поддержка ЧПУ nginx для Zend Framework

Поддержка ЧПУ apache и mod_php для Zend Framework

/var/www/site.org.ua/zend/public/.htaccess:

1
2
3
4
5
6
7
8
9
10
11
12
# Rewrite rules for Zend Framework
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php
 
# Security: Don't allow browsing of directories
Options -Indexes
 
# PHP settings
php_flag magic_quotes_gpc off
php_flag register_globals off
php_flag short_open_tag on

Правило RewriteRule очень простое и может быть прочитано как “для всех файлов, не существующих на диске, использовать файл index.php”.

Создание тестового проекта

Когда Мы скачали Zend Framework, разархивировали и посмотрели, что там внутри, то нашли такое:

# ls -la ../bin/
итого 40
drwxrwxr-x  3  500  500  4096 Сен 12 08:56 .
drwxr-xr-x 11 root root  4096 Сен 12 08:59 ..
drwxr-xr-x  2 root root  4096 Сен 12 08:59 quickstart
-rwxrwxr-x  1  500  500  1258 Янв  6  2010 zf.bat
-rwxrwxr-x  1  500  500 20197 Янв 13  2010 zf.php
-rwxrwxr-x  1  500  500  1409 Янв  6  2010 zf.sh

Запуск простой комманды поможет создать новый проект

./zf.sh create project quickstart

Получаем такую структуру директории

   1.
      quickstart
   2.
      |-- application
   3.
      |   |-- Bootstrap.php
   4.
      |   |-- configs
   5.
      |   |   `-- application.ini
   6.
      |   |-- controllers
   7.
      |   |   |-- ErrorController.php
   8.
      |   |   `-- IndexController.php
   9.
      |   |-- models
  10.
      |   `-- views
  11.
      |       |-- helpers
  12.
      |       `-- scripts
  13.
      |           |-- error
  14.
      |           |   `-- error.phtml
  15.
      |           `-- index
  16.
      |               `-- index.phtml
  17.
      |-- library
  18.
      |-- public
  19.
      |   |-- .htaccess
  20.
      |   `-- index.php
  21.
      `-- tests
  22.
          |-- application
  23.
          |   `-- bootstrap.php
  24.
          |-- library
  25.
          |   `-- bootstrap.php
  26.
          `-- phpunit.xml

Теперь нужно скопировать Зенд

cd library; cp -rпуть/к/ZendFramework/library/Zend .

Получим на выходи такую картинку
Zend QuickStart

Конкурирование Zend Framework

cat application/configs/application.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
 
[staging : production]
 
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
 
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

Comments to PHP фреймворк — Zend Framework

Leave a Comment

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

Загрузка...
Menu Title