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 相关文章推荐
15个小时----从修改程序到自己些程序
Oct 09 PHP
PHP无敌近乎加密方式!
Jul 17 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
一个经典实用的PHP图像处理类分享
Nov 18 PHP
PHP IDE phpstorm 常用快捷键
May 18 PHP
php将图片文件转换成二进制输出的方法
Jun 10 PHP
WordPress中邮件的一些修改和自定义技巧
Dec 15 PHP
Yii控制器中操作视图js的方法
Jul 04 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
Nov 25 PHP
PHP中仿制 ecshop验证码实例
Jan 06 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
[原创]php正则删除img标签的方法示例
May 27 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 连接mysql连接被重置的解决方法
2011/02/15 PHP
php实现求相对时间函数
2015/06/15 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
一个tab标签切换效果代码
2009/03/27 Javascript
JavaScript中的16进制字符(改进)
2011/11/21 Javascript
JS中setTimeout()的用法详解
2013/04/14 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
javascript生成随机大小写字母的方法
2014/02/20 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
如何检测JavaScript的各种类型
2016/07/30 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
2016/12/08 Javascript
Javascript中的prototype与继承
2017/02/06 Javascript
vue 使用eventBus实现同级组件的通讯
2018/03/02 Javascript
小程序实现留言板
2018/11/02 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
python最长回文串算法
2018/06/04 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
python OpenCV GrabCut使用实例解析
2019/11/11 Python
如何在 Django 模板中输出 "{{"
2020/01/24 Python
Python的信号库Blinker用法详解
2020/12/31 Python
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
椰子猫砂:CatSpot
2018/08/27 全球购物
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
图书室管理制度
2014/01/19 职场文书
2014年社区植树节活动方案
2014/02/28 职场文书
经典演讲稿汇总
2014/05/19 职场文书
小学语文课《掌声》教学反思
2016/03/03 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python
pytorch 中nn.Dropout的使用说明
2021/05/20 Python