标签:ati pat index.php get php.ini library 自动 log mod
前面两篇博客分别讲述了PHP自带的类加载和composer中类的自动加载,其实Yaf框架也实现了基于PSR0和PSR4的类的自动加载。根据我对Yaf下类的自动加载方式的理解写下这篇博客。由于接触Yaf框架时间不长,因此如果有不对之处,还望大家不吝指教。
要理解Yaf框架下类的自动加载方式,还是需要PSR0和PSR4规范作为基础,对于PSR0和PSR4的具体规范,本文不做详细解释。Yaf下类的自动加载可以分为全局类和本地类的自动加载、与MVC框架相关的类的自动加载,下面分别做相应的介绍。
一、Yaf中全局类、本地类的自动加载
首先,说明一下本文中所说的全局类和本地类的区别。
全局类是所谓的公司或部门级别的现有类库,该类可以在多个项目中共同使用,而不只在当前的项目中可用。这些类的路径一般是通过在yaf.liabrary在php的配置文件php.ini中指定。
本地类指的是只应用于本项目的类,这些类所在的路径也可以通过在Yaf的配置文件中通过ap.liabrary指定。在Yaf中可以通过Yaf_Loader::registerLocalNamespace()申明那些本地类的前缀,那么带有该前缀的类,需要在本地的类库中加载。
无论是全局类还是本地类,Yaf中使用PSR0规则进行加载的时候,类名中的"_"都会被转换成目录分隔符“/”。
根据所看过的博客,全局类和本地类的加载规则可总结如下:
$loader = Yaf_Loader::getIgnstance(); $loader->registerLocalNamespace(array("local"));
或者在项目中的conf/application.ini中指定ap.library.namespace为local确定本地的命名空间。
下面以类名local_sublocal_test.php说明上面三种情况分别对应的加载规则。
二、与MVC框架相关的类的自动加载
与MVC框架相关的类的的自动加载是通过使用特定的前缀或者后缀名确定类的加载路径的,通过类与其所在的文件的特定映射完成类的自动加载:类名=文件名+后缀。
对于控制器 Controller 默认模块下为{项目路径}/controllers/, 否则为{项目路径}/modules/{模块名}/controllers。例如,IndexController,该类自动加载文件 {项目目录}/Controllers/Index.php。
对于Model 加载路径为{项目目录}/models/, 类似比如UserModel则自动加载{项目目录}/models/User.php。
对于和V相关的视图文件不属于本文的讨论范围。
总结:本文是对Yaf中类的自动加载规则的总结,由于目前使用到的最多的就是和MVC相关的类的加载和在conf/application.ini中指定加载路径的类,因此只讨论这两种情况。其他的在项目路径中加载别的类的方式,在以后用到之后再和大家一起讨论。
标签:ati pat index.php get php.ini library 自动 log mod
原文地址:http://www.cnblogs.com/yue-blog/p/5936026.html