zoukankan      html  css  js  c++  java
  • Yaf零基础学习总结5-Yaf类的自动加载

    Yaf零基础学习总结5-Yaf类的自动加载

    框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件。 

    Yaf在自启动的时候, 会通过SPL注册一个自己的Autoloader, 出于性能的考虑, 对于框架相关的MVC类, Yaf Autoloader只以目录映射的方式尝试一次. 

    具体的目录映射规则如下: 

    对于控制器 Controller 默认模块下为{项目路径}/controllers/, 否则为{项目路径}/modules/{模块名}/controllers 比如IndexController,这自动加载文件 {项目目录}/Controllers/Index.php 

    对于Model 加载路径为{项目目录}/models/ 类似比如UserModel则自动加载{项目目录}/models/User.php 

    其它规则比如actions,plugin也都类似 

    而对于非框架MVC相关的类, Yaf支持全局类和自身类的两种加载方式, 并且Yaf支持大小写敏感和不敏感两种方式来处理文件路径. 

    全局类和自身类(本地类) 

    Yaf为了方便在一台服务器上部署的不同产品之间共享公司级别的共享库, 支持全局类和本地类两种加载方式. 
    全局类是指, 所有产品之间共享的类, 这些类库的路径是通过ap.library在php.ini(当然,如果PHP在编译的时候, 支持了with-config-file-scan-dir,那么也可以写在单独的ap.ini中) 

    而本地类是指, 产品自身的类库, 这些类库的路径是通过在产品的配置文件中, 通过ap.library配置的.在Yaf中, 通过调用Yaf_Loader的registerLocalNamespace方法, 来申明那些类前缀是本地类, 即可. 

    注意:在use_spl_autoload关闭的情况下, Yaf Autoloader在一次找不到的情况下, 会立即返回, 而剥夺其后的自动加载器的执行机会. 

    Yaf中类的加载规则 

    类的加载规则, 都是一样的: Yaf规定类名中必须包含路径信息, 也就是以下划线"_"分割的目录信息. Yaf将依照类名中的目录信息, 完成自动加载. 如下的例子, 在没有申明本地类的情况下: 

    一个映射的例子Zend_Dummy_Foo 
    //Yaf将在如下路径寻找类Foo_Dummy_Bar 
    {类库路径(php.ini中指定的ap.library)}/Foo/Dummy/Bar.php 



    而, 如果通过如下方式调用了registerLocalNamespace:注册本地类 
    [php] view plaincopy
     
    1. //申明, 凡是以Foo和Local开头的类, 都是本地类  
    2.      $loader = Yaf_Loader::getIgnstance();  
    3.      $loader->registerLocalNamespace(array("Foo", "Local"));  


    那么对于刚才的例子, 将会在如下路径寻找Foo_Dummy_Bar 
    //Yaf将在如下路径寻找类Foo_Dummy_Bar 
    {类库路径(conf/application.ini中指定的ap.library)}/Foo/Dummy/Bar.php 



    通过这个例子,大家应该知道了Yaf的类的加载规则了,也能区分全局类和本地类 

    参考来源: 
    Yaf零基础学习总结5-Yaf类的自动加载
    http://www.lai18.com/content/407152.html

  • 相关阅读:
    金融资产的票面利率与实际利率
    对于确定承诺的外汇风险,既属于公允价值套期,又属于现金流量套期,怎么区分呢?
    套期工具(公允价值套期与现金流量套期)
    R语言使用 LOWESS技术图分析逻辑回归中的函数形式
    R语言ROC曲线下的面积
    R语言Poisson回归的拟合优度检验
    R语言在逻辑回归中求R square R方
    R平方/相关性取决于预测变量的方差
    stata具有异方差误差的区间回归
    R语言用于线性回归的稳健方差估计
  • 原文地址:https://www.cnblogs.com/xxcn/p/4434042.html
Copyright © 2011-2022 走看看