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中的integer类型使用分析
Jul 27 PHP
PHP通过header实现文本文件下载的代码
Aug 08 PHP
PHP中对用户身份认证实现两种方法
Jun 04 PHP
fetchAll()与mysql_fetch_array()的区别详解
Jun 05 PHP
PHP操作MongoDB GridFS 存储文件的详解
Jun 20 PHP
PHP反向代理类代码
Aug 15 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 PHP
PHP将session信息存储到数据库的类实例
Mar 04 PHP
php恢复数组的key为数字序列的方法
Apr 28 PHP
如何使用GDB调试PHP程序
Dec 08 PHP
Yii2框架数据验证操作实例详解
May 02 PHP
Yii框架核心组件类实例详解
Aug 06 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
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
php过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
看了就知道什么是JSON
2007/12/09 Javascript
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
微信小程序动态添加分享数据
2017/06/14 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
2017/10/26 jQuery
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
2017/11/23 Python
Django使用paginator插件实现翻页功能的实例
2018/10/24 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
python实现文件的备份流程详解
2019/06/18 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
anaconda升级sklearn版本的实现方法
2021/02/22 Python
H&M旗下高端女装品牌:& Other Stories
2018/05/07 全球购物
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
网络维护管理员的自我评价分享
2013/11/11 职场文书
水污染治理专业毕业生推荐信
2013/11/14 职场文书
银行办公室岗位职责
2014/03/10 职场文书
园艺师求职信
2014/04/27 职场文书
高中美术教师事迹材料
2014/08/22 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
歼十出击观后感
2015/06/11 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏