亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

Zend Framework中的Application和Bootstrap的用法

2020-03-22 19:20:56
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Zend Framework教程之Application和Bootstrap用法,結合實例形式詳細分析了Application和Bootstrap的功能,使用技巧與相關注意事項,需要的朋友可以參考下

本文實例講述了Zend Framework教程之Application和Bootstrap用法。分享給大家供大家參考,具體如下:

在一個MVChtml' target='_blank'>應用程序中,我們需要初始化建立數據庫鏈接,配置視圖和視圖助手,配置布局,注冊相關插件,注冊action 助手等等,這些配置和準備工作我們都需要一一完成。有時候可能有一些初始化操作需要,但是在有些情況下這些初始化可能不需要。通過Zend_Application不僅僅可以完成這些操作,而且可以讓這些配置和初始化工作更統一有序,重用性更高。

Zend_Application使用可以細分成三種:

Zend_Application:加載PHP環境,包括include_paths和自動加載,并實例化引導類。

Zend_Application_Bootstrap:提供引導類的接口。

Zend_Application_Bootstrap_Bootstrap完成大多數引導需要提供的通用功能,包括依賴性檢查和按需加載引導資源。

Zend_Application_Resource提供資源按需加載功能

開發人員可以根據需要繼承Zend_Application_Bootstrap_Bootstrap或實現Zend_Application_Bootstrap_Bootstrapper接口。在入口文件(例如,public/index.php)加載Zend_Application,并根據引導選項和當前環境配置實例化。

引導選項包括指定的引導類文件和引導類路徑,選項具體如下:

所需要的include_paths

自動加載功能額外加載注冊的命名空間

php.ini初始化設置

指定bootstrap類名,如果不是 Bootstrap

資源的前綴鍵值對鍵表示資源前綴名稱

資源的類名或者別名

附加加載的配置文件路徑

附加的配置選項

選項可以是一個數組,或者Zend_Config對象,或者是指定位置的配置文件

引導程序

Zend_Application的第二個功能就是引導應用,Bootstraps 必須實現Zend_Application_Bootstrap_Bootstrapper接口, 具體接口API如下:

interface Zend_Application_Bootstrap_Bootstrapper public function __construct($application); public function setOptions(array $options); public function getApplication(); public function getEnvironment(); public function getClassResources(); public function getClassResourceNames(); public function bootstrap($resource = null); public function run();}

api主要提供了環境配置,獲取引導加載的資源,以及引導程序

你可以實現接口或者繼承Zend_Application_Bootstrap_BootstrapAbstract,或者Zend_Application_Bootstrap_Bootstrap.

資源方法

實現Zend_Application_Bootstrap_BootstrapAbstract接口的資源方法必須遵循如下規則. 方法類型是protected,方法的前綴必須是_init will開頭.

如果要加載使用一個資源方法,在bootstrap()中添加資源名稱即可,資源名稱是資源方法去掉_init前綴。

如果要加載使用多個資源方法,可以通過數組指定。

例如 bootstrap class:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap protected function _initFoo() // ... protected function _initBar() // ... protected function _initBaz() // ...}

只加載使用_initFoo() :

$bootstrap- bootstrap( foo 

加載使用 _initFoo() and _initBar() :

$bootstrap- bootstrap(array( foo , bar 

加載使用全部資源方法,使用無參的bootstrap():

$bootstrap- bootstrap();

新建first_web項目

root@coder-671T-M:/mydev_src/zend_framework_learn/www# tree first_web/
first_web/
├── application
│ ├── Bootstrap.php
│ ├── configs
│ │ └── application.ini
│ ├── controllers
│ │ ├── ErrorController.php
│ │ └── IndexController.php
│ ├── models
│ └── views
│ ├── helpers
│ └── scripts
│ ├── error
│ │ └── error.phtml
│ └── index
│ └── index.phtml
├── docs
│ └── README.txt
├── library
├── public
│ └── index.php
└── tests
├── application
│ └── controllers
│ └── IndexControllerTest.php
├── bootstrap.php
├── library
└── phpunit.xml
16 directories, 11 files

較新版本的zend framework引入了Zend_Application和Bootstrap。Zend_Application 提供了一個可重用資源的引導,通用和模塊化的引導類和依賴檢查。 同時默認負責設置 PHP 環境變量和自動加載功能。

默認新建項目后,會給出如下的幾個文件:

1.項目的Bootstrap

first_web/
├── application
│ ├── Bootstrap.php

具體代碼如下:

 ?phpclass Bootstrap extends Zend_Application_Bootstrap_Bootstrap}

2.配置文件

│ ├── configs
│ │ └── application.ini

具體代碼如下:

[production]phpSettings.display_startup_errors = 0phpSettings.display_errors = 0includePaths.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 = 1phpSettings.display_errors = 1[development : production]phpSettings.display_startup_errors = 1phpSettings.display_errors = 1resources.frontController.params.displayExceptions = 1

3.項目入口文件

├── public
│ └── index.php

 ?php// Define path to application directorydefined( APPLICATION_PATH ) || define( APPLICATION_PATH , realpath(dirname(__FILE__) . /../application // Define application environmentdefined( APPLICATION_ENV ) || define( APPLICATION_ENV , (getenv( APPLICATION_ENV ) ? getenv( APPLICATION_ENV ) : production // Ensure library/ is on include_pathset_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . /../library ), get_include_path(),/** Zend_Application */require_once Zend/Application.php // Create application, bootstrap, and run$application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . /configs/application.ini $application- bootstrap() - run();

以上代碼就是基本的使用Zend_Application方式,完成了環境變量的初始化,加載配置文件,初始化環境,加載模塊,完成web應用程序的引導功能。

資源插件

資源插件只需要實現Zend_Application_Resource_Resource,或者,更簡單的是,繼承Zend_Application_Resource_ResourceAbstract。接口如下:

interface Zend_Application_Resource_Resource public function __construct($options = null); public function setBootstrap( Zend_Application_Bootstrap_Bootstrapper $bootstrap public function getBootstrap(); public function setOptions(array $options); public function getOptions(); public function init();}

例如

class My_Resource_View extends Zend_Application_Resource_ResourceAbstract protected $_view; public function init() // Return view so bootstrap will store it in the registry return $this- getView(); public function getView() if (null === $this- _view) { $options = $this- getOptions(); $title =  if (array_key_exists( title , $options)) { $title = $options[ title  unset($options[ title  $view = new Zend_View($options); $view- doctype( XHTML1_STRICT  $view- headTitle($title); $view- headLink()- appendStylesheet( /css/site.css  $view- headScript()- appendfile( /js/analytics.js  $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper( ViewRenderer  $viewRenderer- setView($view); $this- _view = $view; return $this- _view;}

加載使用資源插件

我了提供資源的重用性,可以將資源方法定義為資源插件。。

為了讓bootstrap能夠識別資源插件,定義資源插件時,需要實現Zend_Application_Bootstrap_ResourceBootstrapper. 接口定義了查找插件,注冊插件和加載插件的api:

interface Zend_Application_Bootstrap_ResourceBootstrapper public function registerPluginResource($resource, $options = null); public function unregisterPluginResource($resource); public function hasPluginResource($resource); public function getPluginResource($resource); public function getPluginResources(); public function getPluginResourceNames(); public function setPluginLoader(Zend_Loader_PluginLoader_Interface $loader); public function getPluginLoader();}

采用資源插件,不僅可以讓資源可以重復利用,同時讓bootstrap更簡潔,如果要修改,新增資源也無需修改你的bootstrap。

通過實現Zend_Application_Bootstrap_BootstrapAbstract (被 Zend_Application_Bootstrap_Bootstrap 繼承) ,才可以使用定義的資源插件

通過將指定的選項傳遞到application object and/or bootstrap,來注冊使用資源插件。這些選項可能會從一個配置文件,或通過手動指定。規則是選項必須是鍵值對,鍵代表資源名稱。資源名稱,是資源插件類的類前綴。例如,Zend框架自帶的資源類前綴“Zend_Application_Resource_”;任何以下,這都是資源的名稱。例如,

$application = new Zend_Application(APPLICATION_ENV, array( resources = array( FrontController = array( controllerDirectory = APPLICATION_PATH . /controllers ,));

FrontController 資源是個特例。他的選項比較特殊。

無論是使用自己的寫的資源插件還是使用第三方的資源插件。你必須保證bootstrap能找到他們,bootstrap 內部通過 Zend_Loader_PluginLoader可以讓我們只需要指定資源插件的類前綴,值為資源類的類路徑便可以輕松注冊資源插件。

例如,如果編寫的資源插件存放在APPLICATION_PATH/resources/ 下,類前綴為My_Resource. 可以使用如下方法注冊加載:

$application = new Zend_Application(APPLICATION_ENV, array( pluginPaths = array( My_Resource = APPLICATION_PATH . /resources/ , resources = array( FrontController = array( controllerDirectory = APPLICATION_PATH . /controllers ,));

在應用程序中比可以使用指定目錄下的資源。

和資源方法類似,通過使用 the bootstrap() 方法可以加載資源插件。加載單一,多個,全部的資源插件的配置方式也類似.

例如:

// Execute one:$bootstrap- bootstrap( FrontController // Execute several:$bootstrap- bootstrap(array( FrontController , Foo // Execute all resource methods and plugins:$bootstrap- bootstrap();

資源注冊表

為了避免資源的重復注冊,導致不必要的浪費Zend_Application_Bootstrap_BootstrapAbstract 提供了一個本地注冊表對象存儲這些資源對象.當你想要存放一個資源的時候,只需要在方法中返回這個資源即可。

為了靈活性,注冊表是作為一個內部“容器”存在的。只要是對象都可以存入到容器中。資源名稱對應為容器的屬性。默認情況下,可以通過Zend_Registry獲取實例使用,也可以自定義其他對象。 setContainer() and getContainer() 方法可用于操縱容器本身。getResource($resource) 可用于獲取一個指定資源。hasResource($resource) 可以檢查資源是否已經注冊存在

例如,注冊一個view資源:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap protected function _initView() $view = new Zend_View(); // more initialization... return $view;}

資源的相關操作:

// Using the has/getResource() pair:if ($bootstrap- hasResource( view )) { $view = $bootstrap- getResource( view // Via the container:$container = $bootstrap- getContainer();if (isset($container- view)) { $view = $container- view;}

請注意:注冊表容器是不是全局的。這意味著你需要通過訪問的bootstrap來獲取資源。 Zend_Application_Bootstrap_Bootstrap提供了 run() , 執行了 run() 之后,它會注冊為前端控制器參數的“bootstrap”,通過他可以獲取路由器,分發器,插件和動作控制器。

具體使用方法:

class FooController extends Zend_Controller_Action public function init() $bootstrap = $this- getInvokeArg( bootstrap  $view = $bootstrap- getResource( view  // ...}

為了防止重復注冊加載資源方法和插件或一些資源可能依賴于其他資源。為了解決這兩個問題,Zend_Application_Bootstrap_BootstrapAbstract提供了一個簡單的依賴性跟蹤機制。

如前所述,所有的資源 - 無論是方法或插件 - 是通過 bootstrap($resource)加載運行的,其中 $resource是資源的名稱,或者資源名稱數組,或者為空,為空表示加載運行所有資源。

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap protected function _initRequest() // Ensure the front controller is initialized $this- bootstrap( FrontController  // Retrieve the front controller from the bootstrap registry $front = $this- getResource( FrontController  $request = new Zend_Controller_Request_Http(); $request- setBaseUrl( /foo  $front- setRequest($request); // Ensure the request is stored in the bootstrap registry return $request;}

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

Zend Framework中Zend_View組件的用法解析

Zend Framework動作助手的用法解析

Zend Framework校驗器Zend_Validate的用法解析

以上就是Zend Framework中的Application和Bootstrap的用法的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文日韩在线观看| 国产精品天天狠天天看| 国产精品男人爽免费视频1| 国产精品欧美久久久| 国产精品成人观看视频国产奇米| 国产精品99蜜臀久久不卡二区| 亚洲欧洲在线看| 久久99亚洲精品| 国产香蕉一区二区三区在线视频| 欧美电影在线观看高清| 日本视频久久久| 日日骚久久av| 国产91ⅴ在线精品免费观看| 亚洲女性裸体视频| 欧美激情区在线播放| 久久久久久久久久久成人| 日本精品视频在线播放| 亚洲国产欧美日韩精品| 国产精品久久久久久久久免费看| 日韩小视频网址| 麻豆国产va免费精品高清在线| 精品国产91乱高清在线观看| 亚洲精品视频网上网址在线观看| 国内自拍欧美激情| 国产一区二区黄| 日本道色综合久久影院| 91精品视频在线播放| 亚洲国产精品久久久久秋霞蜜臀| 日本中文字幕久久看| 亚洲福利视频二区| 91精品国产综合久久香蕉| 午夜精品视频在线| 中文字幕亚洲一区在线观看| 欧美性少妇18aaaa视频| 亚州国产精品久久久| 久久精品91久久久久久再现| 中文字幕国产精品久久| 亚洲欧美激情在线视频| 久久久精品电影| 欧美日韩美女视频| 日韩免费av片在线观看| 日韩av影视综合网| 欧美日韩美女视频| 欧美人与性动交a欧美精品| 国产精品99久久99久久久二8| 亚洲国产免费av| 91国产一区在线| 久久久久成人网| 国产精品第一第二| 7m精品福利视频导航| 在线成人激情视频| 精品人伦一区二区三区蜜桃免费| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久精品91久久久久久再现| 亚洲日本成人网| 美女精品视频一区| 久久精品国产清自在天天线| 国产精品一区二区3区| 136fldh精品导航福利| 欧美高清在线视频观看不卡| 欧美亚洲国产精品| 情事1991在线| 亚洲国产精品久久久久久| 成人国产精品久久久| 久久福利视频网| 国产一区二区三区久久精品| 日韩国产在线播放| 91黑丝高跟在线| 精品久久久在线观看| 精品国产福利视频| 亚洲欧美一区二区三区四区| 亚洲天堂日韩电影| 亚洲中国色老太| 亚洲级视频在线观看免费1级| 欧美激情视频给我| 97在线免费观看视频| 国产精品久久久久久久久影视| 亚洲第一免费播放区| 青青草99啪国产免费| 欧美成人sm免费视频| 亚洲午夜国产成人av电影男同| 欧美极品欧美精品欧美视频| 亚洲精品久久久久中文字幕二区| 成人激情春色网| 国产精品成人va在线观看| 久久久久久久网站| 久久高清视频免费| 欧美高清第一页| 亚洲欧美日韩天堂一区二区| 欧美www视频在线观看| 蜜月aⅴ免费一区二区三区| 91精品国产91| 欧美日韩国内自拍| 亚洲国产精品小视频| 欧美激情在线狂野欧美精品| 日本成人激情视频| 国产精品一区二区三区久久| 在线日韩日本国产亚洲| 国产精品三级在线| 欧美成人亚洲成人| 日韩在线一区二区三区免费视频| 成人av在线网址| 亚洲一区二区三区毛片| 国产视频一区在线| 国产精品视频永久免费播放| 高清欧美一区二区三区| www.色综合| 色偷偷av亚洲男人的天堂| 美日韩丰满少妇在线观看| 欧美激情国产日韩精品一区18| 亚洲视频在线观看免费| 日韩精品高清在线观看| 亚洲视频欧美视频| 欧美精品午夜视频| 国产精品一区二区三区毛片淫片| 另类视频在线观看| 热99精品只有里视频精品| 国产一区二区三区高清在线观看| 国产精品视频一区二区高潮| 国产免费一区二区三区香蕉精| 亚洲三级黄色在线观看| 萌白酱国产一区二区| 久久亚洲精品中文字幕冲田杏梨| 亚洲黄页视频免费观看| 久久777国产线看观看精品| 精品高清美女精品国产区| 亚洲黄色www| 精品国产91久久久久久老师| 国产亚洲精品久久久久久777| 国语自产精品视频在免费| 亚洲视频视频在线| 久久久999国产| 久久精品91久久久久久再现| 日韩一区二区在线视频| 日本国产欧美一区二区三区| 久久天天躁狠狠躁夜夜爽蜜月| 国内揄拍国内精品少妇国语| 欧美成人剧情片在线观看| 欧美激情免费在线| 北条麻妃99精品青青久久| 久久不射电影网| 亚洲欧美中文日韩在线| 日韩在线视频网| 国产精品中文字幕久久久| 色妞欧美日韩在线| 亚洲国产成人av在线| 97香蕉超级碰碰久久免费的优势| 欧美在线性视频| 欧美有码在线观看视频| 国产精品www网站| 日韩美女福利视频| 国产精品无码专区在线观看| 久久免费在线观看| 欧美激情中文字幕乱码免费| 麻豆国产va免费精品高清在线| 欧美疯狂性受xxxxx另类| 成人信息集中地欧美| 亚洲最新中文字幕| 久久久女人电视剧免费播放下载| 国产精品男女猛烈高潮激情| 亚洲国产精品久久| 日韩中文字幕免费看| 57pao成人永久免费视频| 黑人精品xxx一区|