续 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 多模块配置 (二)相关推荐

  1. zend studio mysql 配置_php 在Zend Framework中配置数据库参数

    [php]代码库我是用zend studio 7.2.1建立的zend framework project 也就是说我的框架是由zend stduio7.2.1 帮我建立了文件路径等信息的 下面讲讲如 ...

  2. php zend mvc 配置,理解Zend Framework 的MVC模式_PHP教程

    到底啥是Zend Framework MVC设计模式? MVC (Model-View-Controller)模式,即模型-试图-控制器模式,其核心思想是将整个程序代码分成相对独立而又能协同工作的3个 ...

  3. 从零开始搭建多租户自洽的权限数据配置模块(二)- 主界面的跳转管理以及基础数据维护设计

    基于 DevExpress 从零开始搭建多租户自洽的权限数据配置模块(二) 基础数据的维护管理,以简单基本操作的形式展开.主要是演示devexpress做基本的增删改查.加载表单.建立多表关联.用户操 ...

  4. php zend 自动补全,Zend Framework自动加载、简单路由配置(Bootstrap.php)

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { /* * 自动加载 */ protected function _init ...

  5. Zend Framework学习(3)第一个zend应用

    .htaccess文件 .htaccess文件用来实现URL重置,即当用户访问某资源时,会将其重新定位到指定的文件下. 代码示例: RewriteEngine on RewriteRule !\.(j ...

  6. Zend Framework入门教程

    转战了各个Blog平台,发现还是落户到csdn上吧,以后吐槽在新浪,发长文在csdn,整理链接在Baidu Hi 在大四的时候接下的实验室网站,网站是上三届的吴师兄写的,主要采用的是LAMP,其中PH ...

  7. Zend Framework——权限控制与认证

    Zend Framework Acl与Auth--权限控制与认证 Created with Raphaël 2.1.2 认证开始 登录 发送用户名,密码及数据库连接 校验工作 结果处理 认证结束 步骤 ...

  8. Zend Framework一

    很久没有写东西了,有点懒了.最近做了一个PHP的项目,使用的框架是Zend Framework 1.8.第一次做PHP的项目,也是第一次使用Zend Framework.在网上找它的教程,发现中文教程 ...

  9. php zend框架入门,Zend Framework 入门——快速上手

    1. 安装 从 Zend Framework 的网页上下载最新版本.解压后,把整个目录拷贝到一个理想的地方,比如:/php/library/Zend. 打开 php.ini 文件,确认包含 Zend ...

最新文章

  1. 为什么tcp不采用停等协议_为什么TCP建立连接协议是三次握手,而关闭连接却是四次握手呢?...
  2. Android之加载外部dex
  3. java判断一个类是否公共类
  4. python script文件夹在哪_Python获取当前脚本文件夹(Script)的绝对路径方法代码
  5. P1111 修复公路 (prim)
  6. Android模拟器运行慢的解决方案
  7. FPGA病房呼叫系统实现
  8. 支付宝 android 2.3,app被拒记录-2.3-包含支付宝
  9. 程序员的职业选择,你应该知道的,持续更新ing
  10. json处理第一篇:利用Jackson处理json
  11. 公安交管网服务器维护,交管网总是维护
  12. delphi调用https
  13. 微信小程序商店:极乐小程序商店推荐之601~700
  14. MFC编程 小说分割器
  15. arduino uno + 舵机 + dht11 + 杜邦线 + usb + 面包板 测温度 控制舵机运动
  16. VUE通过自定义指令,只允许输入大写英文以及数字
  17. 情商与影响力——个人魅力
  18. Android 之 向模拟器的sdcard中添加文件
  19. 云和恩墨大讲堂 - 海南站
  20. HDU2549 壮志难酬【水题+输入输出】

热门文章

  1. vim如何开启256色
  2. oracle导数的数据乱码,Oracle10g导数据时中文乱码相关处理
  3. xampp mysql 查询很慢_如何开启mysql的慢查询机制
  4. oracle10g启动顺序,oracle 10g rac维护:开机 关机顺序,流程
  5. postman 怎么调试pos_SpringBoot|第十五章:基于Postman的RESTful接口测试
  6. 纠缠不清的C语言位域(位段)详解
  7. 如何用illustrator做技术手册_做期货用什么技术指标分析?
  8. cam350怎么看顶层_蛋糕胚速学教程大全,适合初学者看哦!
  9. 网站开发用什么语言好_网站开发教程:企业如何用网站开启在线业务?
  10. alter id order by_声卡id查找表