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中利用XML技术构造远程服务(上)
Oct 09 PHP
php之字符串变相相减的代码
Mar 19 PHP
php 获取客户端的真实ip
Nov 30 PHP
php下通过IP获取地理位置的代码(小偷程序)
Jun 09 PHP
有道搜索和IP138的IP的API接口(PHP应用)
Nov 29 PHP
PHP 生成N个不重复的随机数
Jan 21 PHP
PHP中isset与array_key_exists的区别实例分析
Jun 02 PHP
PHP面向对象程序设计实例分析
Jan 26 PHP
php实现图片缩略图的方法
Mar 29 PHP
php使用pear_smtp发送邮件
Apr 15 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
Jul 13 PHP
php原生数据库分页的代码实例
Feb 18 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获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
PHP内置过滤器FILTER使用实例
2014/06/25 PHP
javascript innerHTML使用分析
2010/12/03 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
angularjs创建弹出框实现拖动效果
2020/08/25 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
vue项目使用微信公众号支付总结及遇到的坑
2018/10/23 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
Python之py2exe打包工具详解
2017/06/14 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
对Python中画图时候的线类型详解
2019/07/07 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
应届生法律求职信
2013/10/22 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
节能环保演讲稿
2014/08/28 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书
ICOM R71E和R72E图文对比解说
2022/04/07 无线电