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 相关文章推荐
header()函数使用说明
Nov 23 PHP
PHP 模拟登陆MSN并获得用户信息
May 16 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
Feb 08 PHP
PHP取得一个类的属性和方法的实现代码
May 22 PHP
PHP反向代理类代码
Aug 15 PHP
php检测文本的编码
Jul 26 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
PHP命令Command模式用法实例分析
Aug 08 PHP
PHP利用Mysql锁解决高并发的方法
Sep 04 PHP
php学习笔记之字符串常见操作总结
Jul 16 PHP
PHP迭代器和生成器用法实例分析
Sep 28 PHP
基于laravel belongsTo使用详解
Oct 18 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 显示指定路径下的图片
2009/10/29 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
onpropertypchange
2006/07/01 Javascript
JavaScript 比较时间大小的代码
2010/04/24 Javascript
通过DOM脚本去设置样式信息
2010/09/19 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
jQuery遍历json中多个map的方法
2015/02/12 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
2015/03/04 Javascript
基于Vue2x的图片预览插件的示例代码
2018/05/14 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
深入理解JS异步编程-Promise
2019/06/03 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
Python变量和字符串详解
2017/04/29 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
python字典排序的方法
2019/10/12 Python
python selenium xpath定位操作
2020/09/01 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
香港通票:Hong Kong Pass
2019/02/26 全球购物
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
市场部规章制度
2014/01/24 职场文书
保安岗位职责
2014/02/21 职场文书
电子商务专业求职信
2014/03/08 职场文书
学校食品安全实施方案
2014/06/14 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书
Python Django项目和应用的创建详解
2021/11/27 Python