Разработчик (и) | Zend Technologies |
---|---|
Первый выпуск | 3 марта, 2006; 14 лет назад (2006-03-03) |
Стабильный выпуск | 3.0.0 / 28 июня 2016 г.; 4 года назад (28.06.2016) |
Репозиторий | Zend Repository |
Написано на | PHP 7 |
Операционная система | Кросс-платформенная |
Лицензия | Новая лицензия BSD |
Веб-сайт | framework.zend.com, getlaminas.org |
Zend Framework (ZF) - это открытый исходный код, объектно-ориентированный фреймворк веб-приложений, реализованный в PHP 7 и лицензированный по Новой лицензии BSD. Фреймворк в основном представляет собой набор профессиональных пакетов на основе PHP. Платформа использует различные пакеты, используя Composer как часть своих менеджеров зависимостей пакетов; некоторые из них: PHPUnit для тестирования всех пакетов, Travis CI для непрерывных служб интеграции. Zend Framework предоставляет пользователям поддержку Model View Controller (MVC) в сочетании с решением Front Controller. Реализация MVC в Zend Framework имеет пять основных областей. Маршрутизатор и диспетчер функции решают, какой контроллер запускать на основе данных из URL, а функции контроллера в сочетании с моделью и представлением для разработки и создания конечной веб-страницы.
17 апреля 2019 года было объявлено, что фреймворк переходит в проект с открытым исходным кодом, поддерживаемый Linux Foundation и известный как Laminas.
Zend Framework лицензируется в рамках Open Source Initiative (OSI) -approved New BSD License. Для ZFv1 все разработчики кода должны подписать Лицензионное соглашение участника (CLA), основанное на Apache Software Foundation 's CLA. По словам Энди Гутманса из Zend, политика лицензирования и участия была создана для предотвращения проблем с интеллектуальной собственностью для коммерческих пользователей ZF. ZF2 и более поздние версии не содержат CLA. Также для структуры доступна долгосрочная поддержка (долгосрочная поддержка или LTS) на общую продолжительность 3 года.
Начиная с Zend Framework версии 2.5, компоненты разделяются на пакеты с независимыми версиями, а zendframework / zendframework конвертируется в мета-пакет Composer. Компоненты каркаса, представленные после разделения, не добавляются в метапакет.
Хотя версия выпуска метапакета zendframework / zendframework остается на уровне 3.0.0, он проинструктирует Composer установить последние совместимые версии компонентов платформы в соответствии с семантическим управлением версиями. Таким образом, компонент zend-mvc будет установлен в его текущей версии 3.1.1, zend-servicemanager в версии 3.3.0 и zend-form в версии 2.10.2.
Zend Framework включает в себя следующие компоненты:
Аутентификация | Аутентификация пользователей с помощью различных адаптеров и предоставление аутентифицированной идентичности вашему приложению. |
Штрих-код | Создавайте и отображайте штрих-коды как изображения или в PDF-файлах программно. |
Кэш | Реализация кэширования с различными вариантами хранения, а также кодифицированные стратегии кэширования для обратных вызовов, классов и вывода. |
Captcha | Создавайте и проверяйте CAPTCHA, используя Figlets, изображения, ReCaptcha и многое другое. |
Код | Расширения PHP Reflection API, статическое сканирование кода и генерация кода. |
Component Installer | Плагин Composer для встраивания модулей и поставщиков конфигурации в конфигурацию приложения. |
Config | Чтение и запись файлов конфигурации. |
Агрегатор конфигурации | Агрегирование и объединение конфигурации из различных источников. |
Консоль | Создавайте консольные приложения, используя синтаксис getopt или маршрутизацию, в комплекте с подсказками |
Crypt | Инструменты надежной криптографии и хеширование паролей. |
DB | Уровень абстракции базы данных, абстракция SQL, абстракция набора результатов и реализации RowDataGateway и TableDataGateway. |
Отладка | Безопасно выгружайте отладочную информацию в HTML. |
DI | Автоматическое внедрение зависимостей и диспетчер экземпляров. |
Diactoros | Реализации сообщений HTTP PSR-7. |
DOM | Запрашивать документы HTML и XML с помощью селекторов XPath или CSS. |
Escaper | Надежно и безопасно избегайте HTML, атрибутов HTML, JavaScript, CSS и URL-адресов. |
EventManager | Реализуйте события, сигнальные слоты, аспекты и наблюдателей! |
Выразительное | промежуточное ПО PSR-7 за считанные минуты. |
Feed | Потребляйте и генерируйте каналы Atom и RSS, а также взаимодействуйте с Pubsubhubbub. |
Файл | Найдите файлы классов PHP. |
Фильтр | Программная фильтрация и нормализация данных и файлов. |
Форма | Проверка и отображение простых и сложных форм, преобразование форм в бизнес-объекты и наоборот. |
HAL для PSR-7 | Язык гипертекстовых приложений (HAL) для PSR-7. |
HTTP | HTTP-сообщения и абстракции заголовков, а также реализация HTTP-клиента. (Не реализация PSR-7.) |
Hydrator | Сериализовать объекты в массивы и наоборот. |
InputFilter | Нормализация и проверка входных наборов из Интернета, API, интерфейса командной строки и т. Д., Включая файлы. |
Интернационализация | Предоставляйте переводы для вашего приложения, а также фильтруйте и проверяйте интернационализированные значения. |
JSON | Де / сериализация JSON в PHP, включая выражения JavaScript. |
JSON-RPC Server | Реализация JSON-RPC для PHP. |
LDAP | Выполнение операций LDAP, включая привязку, поиск и изменение записей в каталоге LDAP. |
Загрузчик | Стратегии автозагрузки и загрузки плагинов. |
Журнал | Надежный составной логгер с фильтрацией, форматированием и поддержкой PSR-3. |
Почта | Анализируйте, создавайте, храните и отправляйте сообщения электронной почты, используя различные протоколы хранения и транспорта. |
Математика | Создавайте криптографически безопасные псевдослучайные числа и управляйте большими целыми числами. |
Память | Управляйте данными в среде с ограниченным объемом памяти. |
MIME | Создавать и анализировать сообщения и части MIME. |
Менеджер модулей | Модульная система приложений для приложений zend-mvc. |
MVC | Уровень MVC Zend Framework, управляемый событиями, включая приложения, контроллеры и плагины MVC. |
Интеграция MVC-Console | Интеграция между zend-mvc и zend-console. |
Интеграция MVC-i18n | Интеграция между zend-mvc и zend-i18n. |
плагин fileprg () | Плагин Post / Redirect / Get с обработкой загрузки файлов для контроллеров zend-mvc. |
плагин flashmessenger () | Плагин для создания и отображения флэш-сообщений через контроллеры zend-mvc. |
Подключаемый модуль identity () | Подключаемый модуль для получения текущего аутентифицированного идентификатора в контроллерах zend-mvc. |
prg () плагин | плагин Post / Redirect / Get для контроллеров zend-mvc. |
Навигация | Управляйте деревьями указателей на веб-страницы для построения систем навигации. |
Paginator | Пагинация коллекций данных из произвольных источников. |
ACL | Создание, управление и запрос списков контроля доступа. |
RBAC | Предоставление и запрос средств управления доступом на основе ролей для вашего приложения. |
Сведения о проблеме | Подробные сведения о проблеме PSR-7 для ответов HTTP API и промежуточного программного обеспечения. |
ProgressBar | Создавать и обновлять индикаторы выполнения в различных средах. |
Мост PSR-7 | PSR-7 <->преобразования сообщений zend-http. |
Маршрутизатор | Гибкая система маршрутизации для HTTP и консольных приложений. |
Сериализатор | Сериализируйте и десериализуйте структуры PHP для различных представлений. |
Сервер | Создание RPC-серверов на основе отражения. |
ServiceManager | Заводской контейнер для внедрения зависимостей |
Интеграция ServiceManager-Di | интеграция zend-di для zend-servicemanager |
Сессия | Объектно-ориентированная интерфейс к сессиям и хранилищу PHP. |
SOAP | Создание, обслуживание и доступ к приложениям SOAP, а также анализ и создание WSDL. |
Stdlib | Расширения SPL, утилиты для работы с массивами, обработчики ошибок и многое другое. |
Stratigility | Основа промежуточного программного обеспечения PSR-7 для построения и распределения конвейеров промежуточного программного обеспечения. |
Тег | Управляйте тегами и весовыми элементами, а также создавайте облака тегов. |
Test | Инструменты для облегчения модульного тестирования приложений zend-mvc. |
Текст | Создавайте FIGlets и текстовые таблицы. |
URI | Объектно-ориентированный интерфейс для URI с возможностями проверки. |
Валидатор | Классы валидации для широкого диапазона доменов и возможность связывать валидаторы в цепочку для создания сложных критериев валидации. |
Просмотр | Гибкий уровень просмотра, поддерживающий и предоставляющий несколько слоев просмотра, помощников и т. Д. |
XML-RPC | Полнофункциональные реализации сервера и клиента XML-RPC. |
XML2JSON | Конвертировать XML-документы в JSON. |
Официально поддерживаемый метод установки - через менеджер пакетов Composer.
Zend Framework предоставляет мета-пакет, который включает 61 компонент, но рекомендуемый способ - установить необходимые компоненты инфраструктуры по отдельности. Composer разрешит и установит все дополнительные зависимости.
Например, если вам нужен пакет MVC, вы можете установить его с помощью следующей команды:
$ composer require zendframework / zend-mvc
Полный список компонентов доступен в документации Zend Framework.
Zend Framework следует подходу, основанному на принципе предпочтения конфигурации, и не требует какой-либо конкретной структуры приложения. Доступны скелетные приложения для zend-mvc и zend-expressive, которые предоставляют все необходимое для запуска приложений и служат хорошей отправной точкой.
ZendSkeletonApplication, приложение-скелет, использующее системы уровней и модулей Zend Framework MVC, можно установить с помощью:
$ composer create-project zendframework / skeleton-application
Будет создана файловая структура, подобная этой:
/ ├── config / │ ├── autoload / │ │ ├── global.php │ │ └── local.php.dist │ ├── application.config.php │ └── modules.config.php ├── data / │ └── cache / ├── module / ├── public / │ └── index.php ├── vendor / ├── composer.json ├── composer.lock └── phpunit.xml.dist
В каталоге config / есть конфигурации для всего приложения. Каталог module / содержит локальные модули, которые фиксируются вместе с application. vendor / содержит код поставщика и другие модули, управляемые независимо от приложения, содержимое папки обычно управляется Composer.
Zend Framework модуль имеет только одно требование: класс модуля существует в пространстве имен модуля и может быть загружен автоматически. Класс модуля предоставляет приложению логику настройки и инициализации. Рекомендуемая структура модуля выглядит следующим образом:
├── config / │ └── module.config.php ├── src / │ └── Module.php ├── test / ├── view / ├── composer.json └── phpunit.xml.dist
Каталог config / содержит конфигурации модулей, каталог src / содержит исходный код модуля, как определено в PSR-4 стандарт автозагрузки, каталог test / содержит модульные тесты для модуля, а каталог view / содержит сценарии просмотра.
Zend framework поддерживает ввод командной строки для создания структуры каталогов. Мы будем использовать командную строку interface, чтобы начать создание структуры каталогов для нашего проекта. Это даст вам полное представление о структуре каталогов. Интерфейс поддерживает и предоставляет интерфейс Zend_Tool, предоставляющий целый ряд командных функций.
Эта процедура создаст проект Zend Framework в указанном вами месте. После запуска Zend_Toll будет создан базовый скелет приложения. Это создаст не только структуру каталогов, но и все базовые элементы структуры MVC. Чтобы получить функции Apache, настройки виртуального хоста будут такими:
Listen 8080DocumentRoot / User / keithpope / Sites / hellozend / public
Созданная базовая структура каталогов будет несколько как упоминалось в вышеупомянутой структуре каталогов Zend Framework с аналогичным объяснением. Еще один аспект Zend-Tool, который автоматически инициализируется во время установки, - это загрузка. Здесь основная цель - инициализировать запрос страницы разработчиком. Основная запись здесь, созданная Zend Framework, - это файл индекса. Индексный файл предоставляет функцию для обработки запроса пользователя. Это основная точка входа для всех запросов. Ниже показаны функциональные возможности.
Обычно Zend-Tool создает много важных структур каталогов. Эта система построена на основе технологии Rapid Application Development. В качестве общего правила поддержки, фреймворк фокусируется на кодировании и структурах проекта, а не на более мелких частях.
Контроллер - это основная запись в приложении Zend Framework. Обработчик фронт-контроллера является основным центром приема запросов и выполнения точных действий в соответствии с запросами команд. Весь процесс запроса и реагирования - это маршрутизация и диспетчеризация (что в основном означает вызов правильных методов в классе), которые определяют функциональность кода. Это реализуется через интерфейс Zend_Controller_Router_-. Функциональность маршрутизатора заключается в том, чтобы определить, какие действия необходимо выполнить, а диспетчер наоборот выполняет эти запрошенные действия. Контроллер в Zend Framework связан с разнообразным массивом структурных каталогов, что обеспечивает поддержку эффективной маршрутизации. Основной точкой входа и командным контроллером является Zend_Controller_Front, он работает как основа, которая делегирует полученную и отправленную работу. Запрос формируется и инкапсулируется с экземпляром Zend Controller Request HTTP в качестве поставщика доступа к запросам HTTP. HTTP содержит все суперглобальные переменные фреймворка ($ _GET, $ _POST, $ _COOKIE, $ _SERVER и $ _ENV) с соответствующими путями. Более того, контроллер также предоставляет функции, которые позволяют собирать запрошенные переменные.
Действия - важные функции. Контроллеры не работают без действий. Для этой цели мы создаем другой метод, к имени которого добавлено действие, и фронт-контроллер автоматически распознает его как действие. Действие имеет метод init (), который показывает его частный характер и недоступен никому. Следующие команды выполняются, чтобы Zend_Tool мог создать действие за нас. Благодаря использованию стандартного диспетчера все функции называются по имени действия и к ним добавляется слово «Действие». Это приводит к классу действия контроллера, содержащему такие методы, как indexAction (), viewAction (), editAction () и deleteAction ().
Пользователи Windows:
bin \ zf.bat создают действия для индекса
bin / zf.sh создать действие по индексу
Пример форм и действий:
пространство имен Album \ Form; используйте Zend \ Form \ Form; class AlbumForm extends Form {public function __construct ($ name = null) {// мы хотим игнорировать переданное имя parent :: __ construct ('album'); $ this->add (array ('name' =>'id', 'type' =>'Скрытый',)); $ this->add (array ('name' =>'title', 'type' =>'Text', 'options' =>array ('label' =>'Title',),)); $ this->add (array ('name' =>'artist', 'type' =>'Text', 'options' =>array ('label' =>'Artist',),)); $ this->add (array ('name' =>'submit', 'type' =>'Submit', 'attributes' =>array ('value' =>'Go', 'id' =>'submitbutton').,),)); } // источник: Zend Framework Guide}
Стандартный маршрутизатор - важный инструмент Front Controller. Здесь принимаются основные решения в том, какой модуль, контроллер и действие запрашиваются. Все они здесь обрабатываются. Ниже приводится структура по умолчанию.
Запрос следует шаблону, первая информация берется из конечной точки URL HTTP. URI - это конечная точка запроса. URL структура выглядит следующим образом: http://domain.com/moduleName/controllerName/actionName
Пример кода маршрутизатора по умолчанию:
// Предполагается следующее: $ ctrl->setControllerDirectory (array ('default' =>'/ path / to / default / controllers', 'news' =>'/ path / to / news / controllers', 'blog' =>'/ path / to / blog / controllers'));
. Только модуль:. http: // example / news. module == news.. Неверный модуль сопоставляется с именем контроллера:. http: // example / foo. controller == foo.. Module + controller:. http: // example / blog / archive. module == blog. контроллер == архив.. Модуль + контроллер + действие:. http: // example / blog / archive / list. module == blog. контроллер == архив. действие == список.. Модуль + контроллер + действие + параметры:. http: // example / blog / archive / list / sort / alpha / date / desc. модуль == блог. контроллер == архив. действие == список. sort == alpha. date == desc
Zend Framework также предоставляет некоторые служебные методы. Ниже приведены некоторые служебные методы, представленные в платформе.
_forward {$ action, $ controller = null, $ module = null, array $ params = null}
Другой метод - это служебный метод перенаправления. Это противоположно вышеупомянутому методу _forward (). _redirect () выполняет HTTP при перенаправлении при создании нового запроса. Методы _redirect () принимают два аргумента, а именно $ url и $ options.
Кроме того, помощники действий также являются способом предоставления дополнительных функций в рамках. Помощники действий полезны, когда необходимо обеспечить функциональность между контроллерами.
//application/controllers/IndexController.php public function init () {$ this ->_ helper->viewRenderer->setNoRender (); }
На этапе инициализации IndexController и ContactController вызывается viewReader и для объекта представления вызывается флаг noRender. Отсутствие этого процесса создает ошибку в нашем приложении.
Zend Framework предоставляет структуру представления для нашего проекта, а контроллер и действия автоматически предоставляются нашему приложению. Внутри папки Zend Framework in view мы наблюдаем следующие папки:
Для создания представления следуем:
Hello ZendHello from Zend Framework
Пример представления:
// https://framework.zend.com/ manual / 2.4 / en / modules / zend.view.quick-start.html пространство имен Foo \ Controller; используйте Zend \ Mvc \ Controller \ AbstractActionController; используйте Zend \ View \ Model \ ViewModel; класс BazBatController расширяет AbstractActionController {публичная функция doSomethingCrazyAction () {$ view = new ViewModel (array ('message' =>'Hello world',)); $ view->setTemplate ('foo / baz-bat / do-something-crazy'); return $ view; }}
Zend Technologies, соучредителем которого являются PHP основные участники Энди Гутманс и Зеев Сураски, корпоративный спонсор Zend Framework. Технологические партнеры включают IBM, Google, Microsoft, Adobe Systems и StrikeIron.
Приложения Zend Framework могут работать на любом стеке PHP, который выполняет технические требования. Zend Technologies предоставляет стек PHP, Zend Server (или Zend Server Community Edition), который рекламируется как оптимизированный для запуска приложений Zend Framework. Zend Server включает Zend Framework в свои установщики вместе с PHP и всеми необходимыми расширениями. Согласно Zend Technologies, Zend Server обеспечивает повышенную производительность для PHP и особенно приложений Zend Framework за счет ускорения кода операции и нескольких возможностей кэширования, а также включает средства мониторинга и диагностики приложений. Zend Studio - это IDE, которая включает функции, специально предназначенные для интеграции с Zend Framework. Он предоставляет представление MVC, генерацию кода MVC на основе Zend_Tool (компонент Zend Framework), средство форматирования кода, автозавершение кода, поддержку параметров и многое другое. Zend Studio не является бесплатным программным обеспечением, тогда как Zend Framework и Zend Server Community Edition бесплатны. Zend Server совместим с распространенными инструментами отладки, такими как Xdebug. Другие разработчики могут захотеть использовать другой стек PHP и другую IDE, такую как Eclipse PDT, которая хорошо работает вместе с Zend Server. Предварительно настроенная бесплатная версия Eclipse PDT с Zend Debug доступна на веб-сайте Zend.
Код, вносимый в Zend Framework, зависит от строгого кода, документации и стандартов тестирования. Весь код должен соответствовать стандартам кодирования ZF, и модульные тесты должны достичь 80% покрытия кода, прежде чем соответствующий код может быть перемещен в ветвь выпуска.
22 сентября 2009 г. Zend Technologies объявила, что будет работать с технологическими партнерами, включая Microsoft, IBM, Rackspace, Nirvanix и GoGrid вместе с сообществом Zend Framework для разработки общего API для облачных сервисов приложений под названием Simple Cloud API. Этот проект является частью Zend Framework и будет размещен на веб-сайте Zend Framework, но был запущен отдельный сайт под названием simplecloud.org для обсуждения и загрузки самых последних версий API. Simple Cloud API и несколько облачных сервисов включены в Zend Framework. Адаптеры к популярным облачным сервисам достигли производственного качества.
Чтобы создать программу Hello World, необходимо выполнить несколько шагов, включая:
Затем необходимо убедиться, что среда правильная и нет ошибок, после чего следует установить дату и время для функции отслеживания. Чтобы установить дату и время, можно выполнить множество процедур; например, может быть вызван метод data_default_timezone_set (), и Zend предполагает, что каталог по умолчанию будет включать путь phd. Zend Framework не зависит от какого-либо конкретного файла, но в этом случае полезны вспомогательные классы. Ниже приведены некоторые примеры:
Zend Framework 3.0 был выпущен 28 июня 2016 года. Он включает новые компоненты, такие как Сервер JSON RPC, преобразователь XML в JSON, функциональность PSR-7 и совместимость с PHP 7. Zend Framework 3.0 работает до 4 раз быстрее, чем Zend Framework 2, и пакеты были разделены для обеспечения большего повторного использования. Разработчики Zend Framework активно поощряют использование Zend Framework версии 3.x. Заявленный срок службы Zend Framework 1 - 28 сентября 2016 г., а для Zend Framework 2 - 31 марта 2018 г. Первый разрабатываемый выпуск Zend Framework 2.0 был выпущен 6 августа 2010 года. В этот выпуск были внесены изменения: удаление операторов require_once, переход на пространства имен PHP 5.3, отредактированный набор тестов, переписанный Zend \ Sessionи добавление нового Zend \ Stdlib. Второй выпуск для разработки состоялся 3 ноября 2010 г. Первый стабильный выпуск Zend Framework 2.0 был выпущен 5 сентября 2012 г.