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 魔术函数使用说明
May 14 PHP
PHP校验ISBN码的函数代码
Jan 17 PHP
自己写了一个php检测文件编码的函数
Apr 21 PHP
PHP实现单例模式最安全的做法
Jun 13 PHP
浅析ThinkPHP的模板输出功能
Jul 01 PHP
自定义session存储机制避免会话保持问题
Oct 08 PHP
php操作(删除,提取,增加)zip文件方法详解
Mar 12 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
Dec 22 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
May 13 PHP
php 微信公众平台开发模式实现多客服的实例代码
Nov 07 PHP
php pdo操作数据库示例
Mar 10 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
php单例模式的简单实现方法
2016/06/10 PHP
php获取访问者浏览页面的浏览器类型
2017/01/23 PHP
php实现微信和支付宝支付的示例代码
2020/08/11 PHP
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
JavaScript 验证码的实例代码(附效果图)
2013/03/22 Javascript
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
web打印小结
2017/01/11 Javascript
Angular5中状态管理的实现
2018/09/03 Javascript
纯javascript实现选择框的全选与反选功能
2019/04/08 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
Python爬取知乎图片代码实现解析
2019/09/17 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
selenium如何定位span元素的实现
2021/01/13 Python
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
欧克利英国官网:Oakley英国
2019/08/24 全球购物
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
如何写出好的Java代码
2014/04/25 面试题
乡镇纠风工作实施方案
2014/03/22 职场文书
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
《记金华的双龙洞》教学反思
2014/04/19 职场文书
校园标语大全
2014/06/19 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
php字符串倒叙
2021/04/01 PHP
pytorch实现线性回归以及多元回归
2021/04/11 Python
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP
基于Python实现射击小游戏的制作
2022/04/06 Python
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL