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音乐采集(部分代码)
Feb 14 PHP
php木马攻击防御之道
Mar 24 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
Mar 01 PHP
用来解析.htgroup文件的PHP类
Sep 05 PHP
php导入csv文件碰到乱码问题的解决方法
Feb 10 PHP
php目录操作实例代码
Feb 21 PHP
php文件操作相关类实例
Jun 18 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
Oct 26 PHP
PHP设计模式之装饰器模式定义与用法详解
Apr 02 PHP
PHP中散列密码的安全性分析
Jul 26 PHP
Laravel框架之解决前端显示图片问题
Oct 24 PHP
利用ajax+php实现商品价格计算
Mar 31 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里array_work用法实例分析
2015/07/13 PHP
浅析PHP中Session可能会引起并发问题
2015/07/23 PHP
thinkphp实现图片上传功能
2016/01/13 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
PHP中上传文件打印错误错误类型分析
2019/04/14 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
[转]JS宝典学习笔记
2007/02/07 Javascript
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
用jQuery扩展自写的 UI导航
2010/01/13 Javascript
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
js读写json文件实例代码
2014/10/21 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
vue的mixins属性详解
2018/03/14 Javascript
vue实现树形菜单效果
2018/03/19 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
使用Python操作Elasticsearch数据索引的教程
2015/04/08 Python
Python进程通信之匿名管道实例讲解
2015/04/11 Python
python实现在sqlite动态创建表的方法
2015/05/08 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
捐助倡议书范文
2014/04/15 职场文书
中文专业自荐书
2014/06/29 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers