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 相关文章推荐
综合图片计数器
Oct 09 PHP
PHP中删除变量时unset()和null的区别分析
Jan 27 PHP
在PHP中设置、使用、删除Cookie的解决方法
May 06 PHP
php使用session二维数组实例
Nov 06 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
Jan 22 PHP
经典PHP加密解密函数Authcode()修复版代码
Apr 05 PHP
PHP设置进度条的方法
Jul 08 PHP
PHP实现获取某个月份周次信息的方法
Aug 11 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
May 09 PHP
php上传图片类及用法示例
May 11 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
Sep 01 PHP
PHP实现一个按钮点击上传多个图片操作示例
Jan 23 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
PHPCMS的使用小结
2010/09/20 PHP
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
Yii2框架制作RESTful风格的API快速入门教程
2016/11/08 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
JavaScript 数组中最大最小值
2016/06/05 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
jQuery中的deferred使用方法
2017/03/27 jQuery
详解webpack性能优化——DLL
2017/10/20 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
python 自动提交和抓取网页
2009/07/13 Python
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
利用python画一颗心的方法示例
2017/01/31 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
Python request操作步骤及代码实例
2020/04/13 Python
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
C#笔试题集合
2013/06/21 面试题
室内设计实习自我鉴定
2013/09/25 职场文书
高中英语教学反思
2014/02/04 职场文书
市场拓展计划书
2014/05/03 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
老干部座谈会主持词
2015/07/03 职场文书
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
MySQL系列之一 MariaDB-server安装
2021/07/02 MySQL
关于JavaScript轮播图的实现
2021/11/20 Javascript