Zend Framework 多模块配置 (二)
续 Zend Framework 多模块配置 (一)
4)启动bootstrap文件:
全局bootstrap文件 (repos/application/botstrap.php)
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{/***加载一些配置参数*/protected function _initConfiguration() {//取得配置参数$app = $this->getApplication();$config = $app->getOptions();if ( APPLICATION_ENV == 'development' ) {error_reporting( E_ALL & E_STRICT ); //设定错误报告级别if ( isset( $config[ 'phpsettings' ] ) ) {foreach ( $config[ 'phpsettings' ] as $setting => $value ) {ini_set( $setting, $value ); //设定是否报告错误}}}}/***自动加载任意的命名空间*@param $autoloader 自动加载器对象*/protected function _initAutoload() {$autoloader = Zend_Loader_Autoloader::getInstance();$autoloader->setFallbackAutoloader( true ); //开启自动加载器return $autoloader;}/***取得前端控制器配置*@param $controller 前端控制器对象*/protected function _initController() {$this->bootstrap( 'FrontController' );$controller = $this->getResource( 'FrontController' );$modules = $controller->getControllerDirectory(); //得到模块控制器路径$controller->setParam( 'prefixDefaultModule', true ); //开启缺省模块的命名空间//注册插件类$controller->registerPlugin( new Personal_Plugin_Log( new Zend_Log() ) ) //日志插件->registerPlugin( new Personal_Plugin_Loader( $modules ) ); //模块插件return $controller;}/***取得所有Http数据*@param $request Http数据对象*/protected function _initRequest() {$this->bootstrap( 'FrontController' );$front = $this->getResource( 'FrontController' );$request = $front->getRequest();if ( null === $front->getRequest() ) {$request = new Zend_Controller_Request_Http();$front->setRequest( $request );}return $request;}/***取得配置参数并注册数据库*@param $db 数据库对象*/protected function _initDatabase() {$options = $this->getApplication()->getOptions();//Zend_Debug::dump( $options );$db = Zend_Db::factory( $options[ 'database' ][ 'adapter' ], $options[ 'database' ][ 'params' ] );Zend_Db_Table_Abstract::setDefaultAdapter( $db );Zend_Registry::set( 'DB', $db );return $db;}/***加载所有模块*/protected function _initModules() {// 加载所有模块(必不可少)//Call to prefent ZF from loading all modules}}//end class
default模块bootstrap文件 (repos/application/modules/default/botstrap.php)
/***模块Bootstrap程序*/
class Default_Bootstrap extends Zend_Application_Module_Bootstrap
{protected $_moduleName = 'default'; //模块名称/***包含路径模块下models文件所在路径*/protected function _initAutoload() {//set_include_path:包含路径set_include_path( implode( PATH_SEPARATOR, array(//realpath:符号链接和相对路径引用转换为相应的绝对路径realpath( APPLICATION_PATH . '/modules/' . $this->_moduleName . '/models' ),get_include_path(),) ) );}/***设置站点视图变量*@param $view 视图对象*/protected function _initView() {$view = new Zend_View();$view->setEncoding( 'UTF-8' );$view->doctype( 'XHTML1_STRICT' );$view->headMeta()->appendHttpEquiv( 'Content-Type', 'text/html;charset=utf-8' );$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');$viewRenderer->setView( $view );return $view;}}//end class
6)插件文件:
控制器插件 (/repos/library/Personal/Plugin/Loader.php)
/***控制器插件类*@param $modulesList 模块的路径*/
class Personal_Plugin_Loader extends Zend_Controller_Plugin_Abstract
{protected $_modules;public function __construct( array $modulesList ) {$this->_modules = $modulesList;}/***在分发循环(dispatch loop)前被调用*/public function dispatchLoopStartup( Zend_Controller_Request_Abstract $request ) {$module = $request->getModuleName(); //取得模块名if ( !isset( $this->_modules[ $module ] ) ) {throw new Exception( "Module does not exist!" );}$bootstrapPath = $this->_modules[ $module ];//dirname:返回路径中的目录名称$bootstrapFile = dirname( $bootstrapPath ) . '/Bootstrap.php';//模块名称首字母大写(ucfirst:字符串首字母大写)$class = ucfirst( $module ) . '_Bootstrap';$application = new Zend_Application(APPLICATION_ENV,APPLICATION_PATH . '/modules/' . $module . '/configs/module.ini');if ( Zend_Loader::loadFile( 'Bootstrap.php', dirname( $bootstrapPath ) )&& class_exists( $class ) ) { //class_exists:检查类是否已定义$bootstrap = new $class( $application );$bootstrap->bootstrap();}}}//end class
日志插件 (/repos/library/Personal/Plugin/Log.php)
/***日志记录器插件类*该插件一定要在前端控制器run()前调用*@param $log Zend_Log 对象*/
class Personal_Plugin_Log extends Zend_Controller_Plugin_Abstract
{public function __construct( $log ) {//过滤所有优先级低于ERR的消息$log->addFilter( new Zend_Log_Filter_Priority( Zend_Log::ERR ) );//创建一个Writer对象,并且在指定目录创建一个web.log日志文件$logWriter = new Zend_Log_Writer_Stream( BASE_PATH . '/../data/log/application.log' );//创建一个Formatter对象$logFormat = '%timestamp% %priorityName% %message%' . "\n";$logWriter->setFormatter( new Zend_Log_Formatter_Simple( $logFormat ) );//将Writer对象添加到Log对象中$log->addWriter( $logWriter );//将日志对象保存到注册表中以便随时访问Zend_Registry::set( 'log', $log );}}//end clas
转至 Zend Framework 多模块配置 (三)
转载于:https://www.cnblogs.com/showblog/archive/2010/07/31/1789246.html
Zend Framework 多模块配置 (二)相关推荐
- zend studio mysql 配置_php 在Zend Framework中配置数据库参数
[php]代码库我是用zend studio 7.2.1建立的zend framework project 也就是说我的框架是由zend stduio7.2.1 帮我建立了文件路径等信息的 下面讲讲如 ...
- php zend mvc 配置,理解Zend Framework 的MVC模式_PHP教程
到底啥是Zend Framework MVC设计模式? MVC (Model-View-Controller)模式,即模型-试图-控制器模式,其核心思想是将整个程序代码分成相对独立而又能协同工作的3个 ...
- 从零开始搭建多租户自洽的权限数据配置模块(二)- 主界面的跳转管理以及基础数据维护设计
基于 DevExpress 从零开始搭建多租户自洽的权限数据配置模块(二) 基础数据的维护管理,以简单基本操作的形式展开.主要是演示devexpress做基本的增删改查.加载表单.建立多表关联.用户操 ...
- php zend 自动补全,Zend Framework自动加载、简单路由配置(Bootstrap.php)
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { /* * 自动加载 */ protected function _init ...
- Zend Framework学习(3)第一个zend应用
.htaccess文件 .htaccess文件用来实现URL重置,即当用户访问某资源时,会将其重新定位到指定的文件下. 代码示例: RewriteEngine on RewriteRule !\.(j ...
- Zend Framework入门教程
转战了各个Blog平台,发现还是落户到csdn上吧,以后吐槽在新浪,发长文在csdn,整理链接在Baidu Hi 在大四的时候接下的实验室网站,网站是上三届的吴师兄写的,主要采用的是LAMP,其中PH ...
- Zend Framework——权限控制与认证
Zend Framework Acl与Auth--权限控制与认证 Created with Raphaël 2.1.2 认证开始 登录 发送用户名,密码及数据库连接 校验工作 结果处理 认证结束 步骤 ...
- Zend Framework一
很久没有写东西了,有点懒了.最近做了一个PHP的项目,使用的框架是Zend Framework 1.8.第一次做PHP的项目,也是第一次使用Zend Framework.在网上找它的教程,发现中文教程 ...
- php zend框架入门,Zend Framework 入门——快速上手
1. 安装 从 Zend Framework 的网页上下载最新版本.解压后,把整个目录拷贝到一个理想的地方,比如:/php/library/Zend. 打开 php.ini 文件,确认包含 Zend ...
最新文章
- 为什么tcp不采用停等协议_为什么TCP建立连接协议是三次握手,而关闭连接却是四次握手呢?...
- Android之加载外部dex
- java判断一个类是否公共类
- python script文件夹在哪_Python获取当前脚本文件夹(Script)的绝对路径方法代码
- P1111 修复公路 (prim)
- Android模拟器运行慢的解决方案
- FPGA病房呼叫系统实现
- 支付宝 android 2.3,app被拒记录-2.3-包含支付宝
- 程序员的职业选择,你应该知道的,持续更新ing
- json处理第一篇:利用Jackson处理json
- 公安交管网服务器维护,交管网总是维护
- delphi调用https
- 微信小程序商店:极乐小程序商店推荐之601~700
- MFC编程 小说分割器
- arduino uno + 舵机 + dht11 + 杜邦线 + usb + 面包板 测温度 控制舵机运动
- VUE通过自定义指令,只允许输入大写英文以及数字
- 情商与影响力——个人魅力
- Android 之 向模拟器的sdcard中添加文件
- 云和恩墨大讲堂 - 海南站
- HDU2549 壮志难酬【水题+输入输出】
热门文章
- vim如何开启256色
- oracle导数的数据乱码,Oracle10g导数据时中文乱码相关处理
- xampp mysql 查询很慢_如何开启mysql的慢查询机制
- oracle10g启动顺序,oracle 10g rac维护:开机 关机顺序,流程
- postman 怎么调试pos_SpringBoot|第十五章:基于Postman的RESTful接口测试
- 纠缠不清的C语言位域(位段)详解
- 如何用illustrator做技术手册_做期货用什么技术指标分析?
- cam350怎么看顶层_蛋糕胚速学教程大全,适合初学者看哦!
- 网站开发用什么语言好_网站开发教程:企业如何用网站开启在线业务?
- alter id order by_声卡id查找表