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 相关文章推荐
基于mysql的bbs设计(三)
Oct 09 PHP
特转载一高手总结PHP学习资源和链接.
Dec 05 PHP
php中global和$GLOBALS[]的分析之一
Feb 02 PHP
PHP中使用unset销毁变量并内存释放问题
Jul 05 PHP
php用正则表达式匹配URL的简单方法
Nov 12 PHP
Linux下安装oracle客户端并配置php5.3
Oct 12 PHP
php中常见的sql攻击正则表达式汇总
Nov 06 PHP
php常用文件操作函数汇总
Nov 22 PHP
php正则匹配html中带class的div并选取其中内容的方法
Jan 13 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
Nov 05 PHP
php实现点击可刷新验证码
Nov 07 PHP
详解PHP神奇又有用的Trait
Mar 25 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
第十四节--命名空间
2006/11/16 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
JavaScript设置body高度为浏览器高度的方法
2015/02/09 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
Python3中urlencode和urldecode的用法详解
2019/07/23 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
python3实现飞机大战
2020/11/29 Python
HTML5中图片之间的缝隙完美解决方法
2017/07/07 HTML / CSS
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
祖国在我心中演讲稿600字
2014/05/04 职场文书
党员公开承诺书内容
2014/05/20 职场文书
少先队活动总结
2014/08/29 职场文书
高考升学宴答谢词
2015/01/20 职场文书
街道社区活动报告
2015/02/05 职场文书
2019学生会干事辞职信
2019/06/27 职场文书