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 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
Apr 28 PHP
超级实用的7个PHP代码片段分享
Jan 05 PHP
用PHP+MySQL搭建聊天室功能实例代码
Aug 20 PHP
CI框架源码阅读,系统常量文件constants.php的配置
Feb 28 PHP
php异步多线程swoole用法实例
Nov 14 PHP
php中stdClass的用法分析
Feb 27 PHP
laravel学习教程之存取器
Jul 30 PHP
PHP的PDO预定义常量讲解
Jan 24 PHP
PHP信号处理机制的操作代码讲解
Apr 19 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
简单的php购物车代码
Jun 05 PHP
WordPress免插件实现面包屑导航的示例代码
Aug 20 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
星际争霸中的热键
2020/03/04 星际争霸
php学习笔记 数组遍历实现代码
2011/06/09 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
javascript 有趣而诡异的数组
2009/04/06 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
Jquery 自定义动画概述及示例
2013/03/29 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
Javascript数组中push方法用法分析
2016/10/31 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
在vue项目中正确使用iconfont的方法
2018/09/28 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
简单介绍Python中的JSON使用
2015/04/28 Python
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
Python实战购物车项目的实现参考
2019/02/20 Python
基于Python实现天天酷跑功能
2021/01/06 Python
CSS3制作圆形滚动进度条动画的示例
2020/11/05 HTML / CSS
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
村捐赠仪式答谢词
2014/01/21 职场文书
计算机毕业生自荐信范文
2014/03/23 职场文书
2014预备党员党课学习心得范文
2014/07/08 职场文书
环保项目建议书
2014/08/26 职场文书
教学副校长工作总结
2015/08/13 职场文书
2016年五一劳动节专题校园广播稿
2015/12/17 职场文书
建房合同协议书
2016/03/21 职场文书
Python jiaba库的使用详解
2021/11/23 Python
「月刊Action」2022年5月号封面公开
2022/03/21 日漫