10 чарівно причин використовувати zend framework
У даній статті ми наводимо 10 причин, чому слід використовувати Zend Framework в наступному проекті. Це допоможе вам зробити обґрунтований вибір незалежно від того, починаєте ви новий проект або покращуєте старий.
Причина 1. Спадкування класів

Zend Framework є повністю об'єктно-орієнтованої робочим середовищем, і тому вона реалізує багато об'єктно-орієнтованих (ОО) концепцій, таких як успадкування і інтерфейси класів. Це робить більшість (якщо не всі) компонентів ZF розширюваними до деякої точки. Розробники можуть реалізовувати їх власні особливі варіації індивідуальних компонентів без виламування самого коду ZF. Володіючи такою можливістю настройки ZF тим самим дозволяє вам створювати функціонал, який буде унікальним для вашого проекту. Але завдяки об'єктно-орієнтованої натурі, ви будете мати можливість також використовувати даний функціонал і в інших проектах.
Zend Framework має дуже великий компонент Validation. який дозволяє вам використовувати перевірку даних, що надходять з форм. В ZF форми також обробляються як об'єкти і представлені компонентом Zend_Form.
Припустимо, ви створюєте для користувача функцію для перевірки URL, щоб обмежити введення URL від користувача. Швидше за все реалізувати перевірку приблизно так:
Але це не відповідає OO сутності об'єкта форми, так як не використовується в контексті форми. Для вирішення завдання ми створюємо новий клас Zend_Validator_Url. який є спадкоємцем класу Zend_Validate_Abstract.
Насправді використовується клас Zend_Uri. який вже має метод перевірки URL, який використовується нами. Але так як він не є спадкоємцем класу Zend_Validate_Abstract. ми реалізували клас-оболонку, яка є спадкоємцем потрібного абстрактного класу. Такий підхід дає нам можливість використовувати функцію перевірки URL класу Zend_Uri в нашому об'єкті Zend_Form наступним чином:
Причина 2. Об'єктно-орієнтована сутність

У Zend Framework все є об'єктом, як можна побачити з вище наведеного прикладу. Такий стан вважається недоліком, тому що нібито ускладнює код. Проте, основною перевагою є можливість використовувати код повторно, але ж ніхто не любить повторювати сам себе.
У нас є класи Zend_Validate_Url і Form_Site з прикладу вище, давайте використаємо вже готовий функціонал.
У браузері це повинно виглядати так:

Якщо спробувати передати неправильний URL, то ви побачите роботу нашої функції перевірки:

А тут, можна побачити те, що трапиться, якщо ввести правильний URL:

Як можна помітити, ми ніде не повторювали код об'єкта нашої форми.
"Клас Zend_Validate може бути використаний і в інший спосіб, не тільки в контексті класу Zend_Form. Ви просто реалізуєте клас Zend_Validate і викликаєте метод isValid ($ parameter). передаючи йому значення, які потрібно перевірити. "
Причина 3. Використовуйте те, що потрібно, і забудьте про все інше.

По суті, Zend Framework є просто набором класів. Зазвичай, використовуються компоненти Zend MVC для того, щоб створити повноцінний проект ZF, але у всіх інших випадках, можна просто завантажити компоненти, які потрібні. Структура ZF представляє роз'єднану конструкцію, а це означає те, що можна використовувати переваги компонентів однієї бібліотеки, а не всієї робочої середовища цілком.
Існує конкуренція між клейкими робочими середовищами і робочими середовищами повного циклу. Робоче середовище повного циклу забезпечує все, що потрібно, для створення вашого проекту (наприклад, реалізація ORM, генерація коду, і так далі). Робоче середовище повного циклу вимагає як мінімум створення проекту, але тим самим накладаючи жорсткі обмеження на вашу програму.
Даний код виведе:

Потрібно відзначити наступне: даний компонент Zend Framework (GData) є офіційно затвердженої Google PHP бібліотекою для доступу до їх API. Робоче середовище з роз'їденої структурою дозволяє використовувати компоненти в будь-якому проекті незалежно від інструментів, на яких реалізується проект.
Причина 4. Вона має готове рішення для безлічі завдань!

Zend має кілька демонстрацій, які показують, як використовувати різні компоненти:

Щоб подивитися на них, найкраще скачати повний пакет Zend Framework і перевірити його на своїй машині.
Повний список компонентів можна отримати з Керівництва по Zend Framework.
Причина 5. Ні реалізації моделі - вибирайте свою пригоду!

Це єдиний аргумент для багатьох розробників не використовувати Zend Framework - в ній немає власної реалізації Моделі. Для, тих хто не знає, що таке Модель - це буква M в акронимам MVC (Model-View-Controller. Модель-Вид-Контролер), архітектурі програмування, яка використовується більшістю робочих середовищ PHP.
Чи означає це, що Zend Framework - робоче середовище, яка підтримує тільки "VC"?
Так. Тому що вона не має власне реалізації Моделі. Це створює труднощі для деяких людей на шляху використання ZF, особливо, якщо вони переходять з використання робочого середовища, яка мала власну реалізацію Моделі (наприклад, CakePHP, Symfony, або навіть Ruby on Rails).
З іншого боку. немає. Це робоче середовище MVC, так як реалізований загальний спосіб доступу до бази даних (використовується Zend_Db). А він насправді покладається на деякий вид реалізації Моделі. Здавалося б, чому б не реалізувати Модель? Філософія Zend Framework стверджує, що реалізація моделі унікальна для проекту, і не можливо створити абстрактну реалізацію, тому що невідомо, що потрібно зробити. Вони вважають, що модель повинна бути реалізована самим розробником.
Що в цьому хорошого?
Відсутність реалізації Моделі означає, що розробник вільний використовувати все, що вважає за потрібне для реалізації і навіть може інтегрувати існуючу реалізацію. Будучи вільним від обмежень, розробник може створити більш складну реалізацію, ніж просте уявлення таблицею, що виконується звичайної реалізацією Моделі. Модель містить бізнес логіку. Вона не повинна бути обмежена таблицею бази даних. Вона повинна ставити вимоги для з'єднання однієї таблиці з іншого. Таким чином можна розміщувати код програми в Моделі, що відповідає парадигмі "Тонкий Контролер, товста Модель" MVC.
Як використовувати Zend Framework якщо немає ідей, як створити власну модель?
Для початківців урок Швидкий старт Zend Framework показує хороший спосіб реалізації моделі. В уроці реалізується ORM підхід для реалізації моделі. Створюються три файли: Model, яка абстрактно реалізує ваш об'єкт; Mapper, який формує дані з бази даних для Моделі; і об'єкт таблиця бази даних, який використовує Mapper для отримання даних. Код уроку "Швидкий старт ZF" використовує цей підхід для реалізації моделі для простого додатка "Гостьова книга".
Для тих, хто задається питанням "Чому я повинен кодувати все це самостійно, коли в інших робочих середовищах все вже зроблено за мене?", Відповідь ховається в наступних причин.
Причина 6. Інтегруємо все, що завгодно з усім, що побажаємо!

Роз'єднана структура Zend Framework дозволяє інтегрувати інші бібліотеки, які хочеться використовувати. Припустимо, потрібно використовувати Smarty як системи шаблонів. Це легко виконується за допомогою класу оболонки для Zend_View_Abstract. який використовує реалізацію Smarty для малювання виду ..
Такі дії можна здійснювати і в зворотному напрямку-можна інтегрувати ZF в інші бібліотеки. Наприклад, можна інтегрувати ZF в Symfony.
Наприклад, спробуємо використовувати Doctrine для реалізації Моделі. Продовжуючи вище розроблений приклад сайту, можна реалізувати таблицю бази даних:
Для інтеграції Doctrine в ZF потрібно переконатися, що визначені правильні установки. Для керівництва використання Doctrine з ZF можна скористатися уроком з сайту dev.juokaz.com.
Припустимо, що все зроблено правильно, потрібно тільки згенерувати файл моделі, запустивши файл doctrine-cli.php з уроку:
Ви повинні побачити повідомлення:
Потім, потрібно перевірити папку, яка служить для збереження згенерованих класів Моделі.
Тепер в класі контролера можна використовувати клас моделі сайту.
Якщо тепер перевірити таблицю sites. то в ній повинна бути наша запис:
Тепер, кожен раз при запиті сайту, наш контролер буде використовувати реалізацію моделі Doctrine для збереження даних в базі. Установка може бути кілька складна, але зате тепер наш проект отримав переваги інструменту, який розроблений спеціально для реалізації Моделі. Наш проект тепер використовує силу двох добре опрацьованих технологій.
Причина 7. Керівництва і стандарти

Zend Framework розроблялася відповідно до Керівництва учасника розробки. основні твердження якого свідчать:
- Кожен розробник коду або документації на будь-якому рівні (хоча кількох рядків коду або нового компонента) повинен підписати Contribute License Agreement (CLA).
- Код повинен бути протестований за допомогою PHPUnit.
- Код повинен жорстко відповідати Стандартам кодування
Чіткі і вимогливі керівництва гарантують, що ви будете використовувати тільки добре Новомосковскемий код високої якості, який всебічно протестований.
Причина 8. Кожен код винен, до тих пір поки не доведе свою невинність (Розробка, керована тестуванням)

Розробка, керована тестуванням - це техніка програмування, в якій потрібно, щоб розробник перед тим, як написати функцію, написав тест для функції. Розробляючи тест спочатку, програміст:
- Думає про можливі варіанти використання коду
- Створює білий список введення і виведення
- Спрощує власний код
- Спрощує процедуру передачі коду від однієї людини до іншої

Zend Framework полегшує проходження процедури розробки, керованої тестуванням за допомогою Zend_Test. який використовує PHPUnit (популярну робоче середовище для тестування). PHPUnit дозволяє тестувати не тільки Контролери, але також ваші бібліотеки і функції моделі.
Інтегрування PHPUnit і Zend Framework

Установка Zend Framework і PHPUnit не надто складна. Якщо ви виконаєте її хоча б один раз, то зможете використовувати подібну процедуру в своїх майбутніх проектах. Наступні кроки передбачають, що використовується Zend_Tool для конструювання структури вашого проекту і файлів.
Спочатку встановлюємо PHPUnit, наприклад, через PEAR:
Потім відкриваємо файл phpunit.xml. який згенерований Zend_Tool. Його можна знайти в папці tests в кореневому каталозі вашого проекту. Додаємо наступні рядки:
Після збереження phpunit.xml. створюємо новий файл всередині тієї ж директорії, що і phpunit.xml. і називаємо його TestHelper.php. Даний PHP файл допоможе встановити оточення для тесту.
Потім створюємо батьківський клас ControllerTestCase. який буде батьком всіх наших контролерів. Таким чином реалізуються методи, які зазвичай використовуються в усіх класах тесту контролерів.
Створюємо клас тесту контролера:
Тепер залишилося тільки запустити тест. Відкриваємо командний рядок, переходимо в папку tests і набираємо:
Висновок повинен бути схожий на наступну картинку:

Причина 9. Спільнота і документація

Завдяки безлічі компонентів, складності, і повністю об'єктно-орієнтованого підходу. Zend Framework досить трудомісткий в освоєнні. трохи полегшує процес повнота документації і розвинене співтовариство. Для початку, Zend Framework Programmer's Reference Guide хизується повним керівництвом по всіх компонентах ZF, з прикладами кодом і використовуваними теоріями.
Причина 10. Сертифікація!

Якщо ви все ще сумніваєтеся в тому, що треба освоювати і використовувати Zend Framework, даний факт дуже сильно відрізняє Zend Framework від всіх інших інструментів. Zend не тільки пропонує сертифікацію по Zend Framework, але і по PHP. Пропонуючи сертифікацію, Zend допомагає вам використовувати ваші знання в PHP і Zend Framework для поліпшення портфоліо або резюме. Сайт по сертифікації Zend містить список аргументів. Ось деякі з них:
доповнення
Для збереження балансу наведемо короткий список причин, які допоможуть вам прийняти рішення не використовувати Zend Framework:
- ДУЖЕ крута крива вивчення. Для досвідченого розробника PHP освоїти ZF буде не важко, але для новачка є величезний обсяг матеріалу для вивчення!
- Великий обсяг. Так як Zend Framework має багато компонентів, її сумарний обсяг значно вище в порівнянні з іншими інструментами. Наприклад, системна папка CodeIgniter має розмір 1.5MB, а Zend Framework - 28MB.
- Немає постійного інструменту конструювання. Хоча Zend_Tool має деяку функціональність, але дуже скромну, в порівнянні з утилітами конструювання робочих середовищ повного циклу, таких як CakePHP або Symfony.
- Чи не дружня до хостингам. Структура папок, яка генерується Zend_Tool. передбачає, що публічна папка буде єдиною Директорією, доступною через http, що передбачає, що користувач має можливість створити віртуальний сервер для проекту. Таке припущення невірно для багатьох хостингів.
- Занадто "клейка". Так як все існує в роздільних класах, іноді дуже важко уявити, як все працює. Без Zend_Tool вельми складно встановити робочу структуру проекту.
висновок
Велика кількість поліпшень було зроблено в різних робочих середовищах PHP за останні кілька років. Існують такі інструменти, як Codeigniter. CakePHP і Symfony. які теж придатні для використання. Вибір робочого середовища визначається тим, наскільки комфортно ви себе в ній відчуваєте. Жоден з інструментів не допоможе вам, якщо ви не зможете повністю використовувати всі його переваги.
Просто спробуйте Zend. Якщо вам буде комфортно працювати в ньому - відмінно. Якщо немає, то залиште його і спробуйте іншу робочу середу. Дуже скоро ви знайдете те, що найкращим чином відповідає вашим потребам.

За рахунок отримання інформації відразу по двох каналах (зір і слух) ефективність навчання значно перевершує навчання по книгах. А домашні завдання і онлайн-тести дозволять вам постійно думати на мові, що вивчається і відразу перевіряти свої знання!


Якщо ви давно хочете як слід вивчити HTML, то у мене для Вас є чудова новина!

Якщо ви вже вивчили HTML і хочете рухатися далі, то наступним кроком буде вивчення технології CSS.

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