Yii2中YiiBase自动加载类、引用文件方法分析(autoload)


Posted in PHP onJuly 25, 2016

本文实例分析了Yii2中YiiBase自动加载类、引用文件的方法。分享给大家供大家参考,具体如下:

在Yii2中这个函数是用来加载类的,没有直接引用文件的相关实现。但是这个也可以用来引用文件。

public static function autoload($className)
{
   /*
    * $classMap是一个name-value数组,
    * name为类的名称,
    * value为这个类的文件路径,其中路径可包含别名
    *
    * 首先在$classMap中查找是否设置了类别名路径
    */
  if (isset(static::$classMap[$className])) {
   $classFile = static::$classMap[$className];
   //如果路径是别名,获取别名路径
   if ($classFile[0] === '@') {
    $classFile = static::getAlias($classFile);
   }
  //如果$className以"\"开头,如:'\a\b\MyClass'
  //则会生成别名 '@a/b/MyClass.php',然后获取对应的别名路径。
  } elseif (strpos($className, '\\') !== false) {
   $classFile = static::getAlias('@' . str_replace('\\', '/', $className) . '.php', false);
   if ($classFile === false || !is_file($classFile)) {
    return;
   }
  } else {
   return;
  }
  //引用文件
  include($classFile);
  //如果debug,并且类不存在....
  //则异常
  //所以 在关闭debug的情况下 也是可以加载文件的
  if (YII_DEBUG && !class_exists($className, false) && !interface_exists($className, false) && !trait_exists($className, false)) {
   throw new UnknownClassException("Unable to find '$className' in file: $classFile. Namespace missing?");
  }
}

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php使用websocket示例详解
Mar 12 PHP
ThinkPHP模板IF标签用法详解
Jul 01 PHP
PHP实现生成唯一编号(36进制的不重复编号)
Jul 01 PHP
PHP实现的比较完善的购物车类
Dec 02 PHP
PHP实现懒加载的方法
Mar 07 PHP
PHP数组操作――获取数组最后一个值的方法
Apr 14 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
Apr 14 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
Apr 15 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
Jun 08 PHP
php的扩展写法总结
May 14 PHP
PHP操作Redis常用命令的实例详解
Dec 23 PHP
PHP中session跨子域的三种实现方法
Jul 25 #PHP
Yii2创建控制器(createController)方法详解
Jul 23 #PHP
Yii2主题(Theme)用法详解
Jul 23 #PHP
Yii2创建表单(ActiveForm)方法详解
Jul 23 #PHP
Yii2验证器(Validator)用法分析
Jul 23 #PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
Jul 23 #PHP
Yii2简单实现多语言配置的方法
Jul 23 #PHP
You might like
PHP 第三节 变量介绍
2012/04/28 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
PHP生成短网址方法汇总
2016/07/12 PHP
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
js实现倒计时及时间对象
2016/11/15 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
Python  __getattr__与__setattr__使用方法
2008/09/06 Python
python生成器generator用法实例分析
2015/06/04 Python
Python环境搭建之OpenCV的步骤方法
2017/10/20 Python
Python小进度条显示代码
2019/03/05 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
PyTorch中的Variable变量详解
2020/01/07 Python
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
do you have any Best Practice for testing
2016/06/04 面试题
学校介绍信范文
2014/01/14 职场文书
初中三年毕业生的自我评价分享
2014/02/14 职场文书
销售人员求职信
2014/07/22 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
Python re.sub 反向引用的实现
2021/07/07 Python