zend framework源码笔记

ZF是利用apache的rewrite技术实现单一入口,打开public/index.php文件开始进行源代码的解读。

 

一开始定义的是一些系统常量,比如程序根目录等,第一个文件

 

 

这是程序启动所要加载的第一个文件,它包含了ZF的整个核心构建,首先是创建类并初始化


在构造类时,首先调用构造函数,在构造函数里面有有一个$this->_autoloader = Zend_Loader_Autoloader::getInstance();这是实现ZF的类文件的自动包含,即:当某个类不存在是,ZF会自动调用某个机制进行处理,当使用到时再进行跟进。由于构造函数的$options选项是字符串,故程序会加载 configs/application. ini 文件, 由此我们也会知道ZF是在初始化是载入配置文件的,下面看一下ZF是如何载入配置文件的

   

ZF是通过私有函数    protected function _loadConfig($file) 载入配置文件的,有代码可看出它不止支持ini型文件,跟踪到Zend_Config_Ini可以仔细观察,但是在进入Zend_Config_Ini以前,因为没有包含Zend/Config/Ini.php文件,ZF会子动调用Zend_Loader_Autoloader::getInstance()接口进行加载,进入Zend/Loader/Autoloader.php文件,Zend_Loader_AutoLoader类的构造函数利用SPL(即:spl_autoload_register(array(__CLASS__, 'autoload'));)技术,让autoload函数处理尚未定义的类,即加载相应的文件,ZF除了处理简单的包含用有该类的文件外,还处理了命名空间等,不做介绍。可以发现autoload()是调用Zend/Loader.php文件的loadClass()函数加载相应的文件并进行相应的处理,到此,ZF已经自动加载完Zend/Config/Ini.php文件,即可调用Zend_Config_Ini类,ini解析完成后返回配置文件的一个数组,然后教给 public function setOptions(array $options) 这个函数进行处理,在设置工程中,由于会设置相应的参数,Bootstrap启动文件同样会被设置,并被创建了一个实例,而且将$application这个实例作为参数传个了他,我想在后面肯定会拿次做文章

到此整个项目的环境设置完毕,下面就是运行了
 
接下来运行bootstrap引导程序

   运行启动文件,其构造函数来自Zend_Application_Bootstrap_BootstrapAbstract抽象类
在设置options的过程中,我们可以通过在Bootstrap.php文件写一些函数比如setincludepaths()函数对配置文件的内容作出修改
再次,ZF同样是注册了插件系统,设置了$this->_pluginResources[$resource] = $options;将controller目录进行记录,应该是相当于使用插件时的下面代码(这些代码在Zend手册的Plugins里面有的)

 在$application->bootstrap()的实现,是在文件BootstrapAbstract.php中 protected function _bootstrap($resource = null)这个函数,首先ZF查找传递过来的资源,如果为空,则自动查找Bootstrap.php文件中的所有以_init开头的函数,并执行
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值