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 相关文章推荐
AJAX for PHP简单表数据查询实例
Jan 02 PHP
php 函数中使用static的说明
Jun 01 PHP
php的array数组和使用实例简明教程(容易理解)
Mar 20 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
Nov 09 PHP
yii实现使用CUploadedFile上传文件的方法
Dec 28 PHP
php等比例缩放图片及剪切图片代码分享
Feb 13 PHP
Discuz论坛密码与密保加密规则
Dec 19 PHP
phpmyadmin下载、安装、配置教程
May 16 PHP
php实现微信支付之企业付款
May 30 PHP
掌握PHP垃圾回收机制详解
Mar 13 PHP
php和nginx交互实例讲解
Sep 24 PHP
php数值计算num类简单操作示例
May 15 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之字符串变相相减的代码
2007/03/19 PHP
php操作csv文件代码实例汇总
2014/09/22 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
JS获取url参数,JS发送json格式的POST请求方法
2018/03/29 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
2018/04/10 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
简单了解JavaScript异步
2019/05/23 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
python匿名函数用法实例分析
2019/08/03 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
英国绿色商店:Natural Collection
2019/05/03 全球购物
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
介绍一下MD5加密算法
2016/11/12 面试题
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
小学运动会表扬稿
2014/01/19 职场文书
学生会部长竞聘书
2014/03/31 职场文书
2014年绿化工作总结
2014/12/09 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
go 实现简易端口扫描的示例
2021/05/22 Golang
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
2021/06/09 Python
Python实现归一化算法详情
2022/03/18 Python