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 expects parameter 1 to be resource, array given 错误
Mar 23 PHP
PHP zip扩展Linux下安装过程分享
May 05 PHP
PHP内置过滤器FILTER使用实例
Jun 25 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
PHP编程中尝试程序并发的几种方式总结
Mar 21 PHP
php unicode编码和字符串互转的方法
Aug 12 PHP
老生常谈PHP面向对象之注册表模式
May 26 PHP
PHP实现将base64编码字符串转换成图片示例
Jun 22 PHP
PHP实现基于3DES算法加密解密字符串示例
Aug 24 PHP
Laravel 验证码认证学习记录小结
Dec 20 PHP
php使用Swoole实现毫秒级定时任务的方法
Sep 04 PHP
php的lavarel框架中join和orWhere的用法
Dec 28 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 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
PHP获取当前页面完整URL的实现代码
2013/06/10 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
PHP基于CURL进行POST数据上传实例
2014/11/10 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
含有CKEditor的表单如何提交
2014/01/09 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
2015/09/24 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
2016/09/17 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
搭建vue开发环境
2018/07/19 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
python结合shell查询google关键词排名的实现代码
2016/02/27 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
pyqt5自定义信号实例解析
2018/01/31 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
python实现滑雪者小游戏
2020/02/22 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
英国顶级足球鞋的领先零售商:Lovell Soccer
2019/08/27 全球购物
房产委托公证书样本
2014/04/04 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
升职感谢信
2015/01/22 职场文书
在职证明范本
2015/06/15 职场文书
《风娃娃》教学反思
2016/02/18 职场文书
MySQL8.0升级的踩坑历险记
2021/11/01 MySQL
vue ref如何获取子组件属性值
2022/03/31 Vue.js