Теория на операция zend_application - Zend Framework за употреба
Подготовка конфигуриран MVC -applications готов за обработка на искането, изисква допълнителен код, чийто обем зависи от функционалното: установяване на връзка с базата данни, вида конфигурация и техните асистенти, конфигуриране оформления (оформления), приставка за регистрация, асистенти регистрация за действие и т.н. ,
В допълнение, може да искате да използвате отново същия код за изтегляне на теста, скриптове на услуги, скриптове, за да преминават през короните. Можете просто да добавите фърмуера скрипт, често има инициализации, които зависят от околната среда - например, да преминават през короните MVC може да е излишно, а за услугата на скрипта може да бъде достатъчно само слой база данни.
Zend_Application улеснява управлението на първоначалното зареждане и улеснява повторната употреба може да се капсулира обувка според парадигмата на обектно-ориентиран.
Zend_Application се състои от три области:
Zend_Application. зарежда PHP околната среда. включително include_paths и Startup (самозарядни) и създава обект искания фърмуера клас.
Zend_Application_Bootstrap. Тя осигурява интерфейси за фърмуера класове. Zend_Application_Bootstrap_Bootstrap осигурява обща функционалност, която отговаря на нуждите на по-голямата част от първоначалната такса, включително и за издръжка на проверка алгоритми и възможност за изтегляне на средства при поискване.
Zend_Application_Resource предоставя интерфейс за стандартни възбуждане ресурси, които могат да се зареждат при поискване от фърмуера инстанция, както и множество реализации ресурс, използван по подразбиране.
Разработчиците могат да създават фърмуера клас за прилагане чрез разширяване Zend_Application_Bootstrap_Bootstrap или поне реализиране Zend_Application_Bootstrap_Bootstrapper интерфейс. Входната точка (например публичен / index.php) добавени Zend_Application и примери чрез преминаване:
Опции за изтегляне
Опции за стартиране включват пътя към файла, съдържащ класа фърмуера и по желание:
Всички допълнителни начини за добавяне на include_path
Всички допълнителни AutoLoader пространства от имена, които искате да се регистрирате
Всякакви php.ini настройка да се инициализира
Клас име на багажника (ако използвате име, различно от "първоначално зареждане")
Двойките префикс път за ресурси
Всички средства, които да се използват (от името на класа или кратко име)
Един допълнителен начин за зареждане на конфигурационния файл
Допълнителни опции за конфигуриране
Опции за поле, а Zend_Config обект, или пътят до конфигурационния файл.
Втората област на компоненти отговорност Zend_Application се изпълнява връзки за обувки за кандидатстване. Попълване минимално трябва да се прилагат Zend_Application_Bootstrap_Bootstrapper интерфейс. който определя следния API.
обществена функция __construct # 40; заявление $ # 41; ;
обществена функция setOptions # 40; опции масив $ # 41; ;
обществена функция getApplication # 40; # 41; ;
обществена функция getEnvironment # 40; # 41; ;
обществена функция getClassResources # 40; # 41; ;
обществена функция getClassResourceNames # 40; # 41; ;
обществена функция фърмуера # 40; $ Resource = нула # 41; ;
обществена функция серия # 40; # 41; ;
Този API позволява на връзки за обувки, за да приемам на околната среда и конфигурацията на обекта за кандидатстване, се определят средства за товарене които тя е отговорна, да извършва натоварване и стартирате приложения.
Вие сте свободни да прилагат този интерфейс, или да използвате, за да се разшири Zend_Application_Bootstrap_BootstrapAbstract Zend_Application_Bootstrap_Bootstrap.
Освен функционален и има и други проблемни области, с които трябва да се запознаят.
Zend_Application_Bootstrap_BootstrapAbstract осигурява лесен конвенция за определяне на методи клас ресурси. Всеки защитен метод с имена, започващи с _init. Тя ще се счита за метод на ресурсите.
За да стартирате един метод на ресурсите, обадете се на фърмуера () с името на ресурса като аргумент. Името на ресурсите е името на метода без _init префикс.
За да стартирате няколко метода за ресурси, преминават множество имена. И, за да пускате всички методи на ресурси, обадете се на метода, без аргументи.
Вземете следващата фърмуера класа:
клас Bootstrap простира Zend_Application_Bootstrap_Bootstrap
За да ви позволи да направите вашите връзките на обувките по-многократна употреба, ние сме предвидили възможността да настоява ресурсите си в класове плъгин ресурси. Това ви позволява лесно да се съчетаят ресурси чрез използване на конфигурация. По-долу е описание на това как да се създаде ресурси. В този раздел ще покажем как да ги използвате.
Ако изтеглянето трябва да подкрепя ресурсни плъгини, ще трябва да приложи допълнителен интерфейс Zend_Application_Bootstrap_ResourceBootstrapper. Този интерфейс дефинира API за локализиране, регистриране и плъгини зареждане на ресурси:
обществена функция registerPluginResource # 40; $ Ресурс. $ Options = нула # 41; ;
обществена функция unregisterPluginResource # 40; $ ресурс # 41; ;
обществена функция hasPluginResource # 40; $ ресурс # 41; ;
обществена функция getPluginResource # 40; $ ресурс # 41; ;
обществена функция getPluginResources # 40; # 41; ;
обществена функция getPluginResourceNames # 40; # 41; ;
обществена функция setPluginLoader # 40; Zend_Loader_PluginLoader_Interface $ товарач # 41; ;
обществена функция getPluginLoader # 40; # 41; ;
Ресурсни плъгини основно предоставят възможност за създаване на ресурси инициализират, които могат да се използват повторно в различни приложения. Това ви позволява да запазите сегашния си обувка и въвеждане на нови ресурси, без да изисква промени в натоварването.
Zend_Application_Bootstrap_BootstrapAbstract (и следователно наследява от Zend_Application_Bootstrap_Bootstrap класа си) да приложи този интерфейс, което ви позволява да използвате ресурсите плъгини.
За да използвате ресурсите плъгини, трябва да ги посочите в опциите предадени на обекти за кандидатстване и / или изтегляне. Тези опции могат да бъдат определени чрез конфигурационен файл или прехвърлени ръчно. Опции ще бъдат на двойки ключ / опции, когато ключът е името на ресурса. Името на ресурса ще бъде част от низа след префикса на класа. Например, средствата, предоставени в Zend Framework # 'та, имат представка клас "Zend_Application_Resource_", всичко, което следва, е името на ресурса. Например:
$ Приложение = нов Zend_Application # 40; APPLICATION_ENV, масив # 40;
"FrontController '=> масив # 40;
"ControllerDirectory '=> APPLICATION_PATH. "/ Controllers",
Това означава, че трябва да се използва "FrontController" ресурс с определени опции.
Ако имате намерение да пише свои собствени плъгини ресурси, или да се добави трета страна, ще се наложи да кажете на фърмуера къде да ги търсим. Вътрешно, връзки за обувки използва Zend_Loader_PluginLoader. Затова е достатъчно да се посочи клас префикс и пътя до директорията с приставки ресурси.
Например, да предположим, че имате вашите ресурси плъгини в APPLICATION_PATH / ресурси / директория. и те използват общ префикс My_Resource. Можете да предаде тази информация на обекта на приложението, както е показано по-долу:
$ Приложение = нов Zend_Application # 40; APPLICATION_ENV, масив # 40;
"My_Resource '=> APPLICATION_PATH. "/ Ресурси /",
"FrontController '=> масив # 40;
"ControllerDirectory '=> APPLICATION_PATH. "/ Controllers",
След това можете да използвате ресурсите от тази директория.
Точно както в случая на ресурсите на методите, които използвате метод фърмуера (), за да се изпълни ресурсни плъгини. По същия начин, можете да укажете на един плъгин ресурс, множество плъгини (чрез масив), или всички приставки. В допълнение, можете да ги комбинирате с методи ресурси.
$ За първоначално зареждане -> фърмуера # 40; "FrontController" # 41; ;
$ За първоначално зареждане -> фърмуера # 40; масив # 40; "FrontController". "Foo" # 41; # 41; ;
// Изпълнение всички методи ресурси и приставки:
$ За първоначално зареждане -> фърмуера # 40; # 41; ;
Повечето, ако не всички, методи и плъгини за ресурси ще се инициализира обекти, както и в много случаи, тези обекти ще са необходими на други места в заявлението. Как мога да получа достъп до тях?
Zend_Application_Bootstrap_BootstrapAbstract предоставя местна регистър за тези обекти. За да съхранявате вашите обекти в нея, просто да ги върне от ресурсите си.
За по-голяма гъвкавост, този регистър се позова на "контейнер"; Единственото изискване е, че той е бил подложен. Ресурсите са регистрирани като свойства кръстени на името на ресурсите. подразбиране Zend_Registry инстанция. но по желание можете да зададете всеки друг обект. За контейнер могат да се използват техники за обработка setContainer () и getContainer (). Метод getResource ($ ресурс) може да се използва за извличане на ресурс от контейнера, и hasResource ($ ресурс) - да се провери дали ресурсът е бил регистриран.
Помислете например за основен оглед на ресурсите:
клас Bootstrap простира Zend_Application_Bootstrap_Bootstrap
защитена функция _initView # 40; # 41;
$ View = $ контейнер -> изглед;
Трябва да се отбележи, че в регистъра и съдът не е глобален. Това означава, че трябва да има достъп до връзки за обувки, за да бъде в състояние да извлича ресурси. Zend_Application_Bootstrap_Bootstrap осигурява известна удобство за това: докато той се регистрира като параметър "работят поетапно" план за изпълнение () в предния контролер, като ви позволява да го извлече от администраторите на рутер, диспечерските, приставки и действие.
Например, ако искате в действията си контролер за достъп до ресурса на изглед от горе, можете да направите следното:
клас FooController простира Zend_Controller_Action
обществена функция първоначален # 40; # 41;
$ Първоначално зареждане = $ това -> getInvokeArg # 40; "Първоначално зареждане" # 41; ;
$ View = $ фърмуера -> getResource # 40; "Преглед" # 41; ;
В допълнение към изпълнението методи на ресурси и плъгини, е необходимо също така да се гарантира, че те се изпълняват само по веднъж. Те са предназначени за изтегляне на приложението, както и изпълнение на няколко пъти може да доведе до загуба на ресурси.
В същото време, някои ресурси, могат да зависят от другите, и се нуждаят от тяхното предварително натоварване преди тяхното изпълнение. За решаването на тези два проблема Zend_Application_Bootstrap_BootstrapAbstract осигурява прост и ефективен механизъм за проследяване на зависимост.
Както бе споменато по-горе, всички ресурси - дали методи или плъгини - са bootstrapped като се обадите на фърмуера ($ ресурс). където $ ресурс е името на ресурса или набор от ресурси. Ако $ ресурс е пропуснат, това означава, че всички ресурси трябва да бъдат показвани.
Ако ресурсът зависи от други ресурси, тя трябва да се извика методът фърмуера () в кода си, за да се гарантира, че тези ресурси. Следващи разговори с тези ресурси ще бъдат игнорирани.
метод за ресурс, такъв разговор ще бъде, както следва:
клас Bootstrap простира Zend_Application_Bootstrap_Bootstrap
защитена функция _initRequest # 40; # 41;
// Гарантиране на контролера се инициализира
$ Това -> фърмуера # 40; "FrontController" # 41; ;
// Разархивирайте предната част на регистъра на багажника контролер
$ = $ Front това -> getResource # 40; "FrontController" # 41; ;
$ Заявка = нов Zend_Controller_Request_Http # 40; # 41; ;
$ Заявка -> setBaseUrl # 40; "/ Foo" # 41; ;
$ Front -> setRequest # 40; поискване $ # 41; ;
// Уверете се, че искането се записва в регистъра на натоварване
Както беше казано по-рано. добър начин да се създаде за многократна употреба фърмуера ресурси и кодиране на отделни класове е да се използват ресурсите плъгини. Докато Zend Framework идва с набор от стандартни модули ресурси, идеята е, че разработчиците трябва да пишат свои собствени плъгини за капсулиране на собствения си код, предназначена да се инициализира.
Ресурсите трябва да прилагат само Zend_Application_Resource_Resource или по-просто все още, да удължат абстрактен клас Zend_Application_Resource_ResourceAbstract. Основният интерфейс е съвсем проста:
обществена функция __construct # 40; $ Options = нула # 41; ;
обществена функция setBootstrap # 40;
обществена функция getBootstrap # 40; # 41; ;
обществена функция setOptions # 40; опции масив $ # 41; ;
обществена функция getOptions # 40; # 41; ;
обществена функция първоначален # 40; # 41; ;
Той определя, че просто ресурс следва да приемат опции за строителя, има механизми за настройка / все опции, има механизми за определяне / извличането на фърмуера обекта, и метод за инициализация.
клас My_Resource_View простира Zend_Application_Resource_ResourceAbstract