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 相关文章推荐
PHP4和PHP5共存于一系统
Nov 17 PHP
增加反向链接的101个方法 站长推荐
Jan 31 PHP
php 在线打包_支持子目录
Jun 28 PHP
php 多线程上下文中安全写文件实现代码
Dec 28 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
Oct 06 PHP
php多功能图片处理类分享(php图片缩放类)
Mar 14 PHP
新浪SAE搭建PHP项目教程
Jan 28 PHP
PHP删除指定目录中的所有目录及文件的方法
Feb 26 PHP
Codeigniter实现发送带附件的邮件
Mar 19 PHP
Yii实现Command任务处理的方法详解
Jul 14 PHP
微信开发之php表单微信中自动提交两次问题解决办法
Jan 08 PHP
Laravel 实现密码重置功能
Feb 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
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
PHP生成sitemap.xml地图函数
2013/11/13 PHP
初识Laravel
2014/10/30 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
ThinkPHP框架里隐藏index.php
2016/04/12 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
jQuery 树形结构的选择器
2010/02/15 Javascript
JS前端框架关于重构的失败经验分享
2013/03/17 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
微信小程序switch组件使用详解
2018/01/31 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
Python矩阵常见运算操作实例总结
2017/09/29 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
详解python中__name__的意义以及作用
2019/08/07 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
如何用Python进行时间序列分解和预测
2021/03/01 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
全球度假村:Club Med
2017/11/27 全球购物
中学教师管理制度
2014/01/14 职场文书
公益广告语集锦
2014/03/13 职场文书
小学生综合素质评语
2014/04/23 职场文书
心灵捕手观后感
2015/06/02 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
Pytorch 如何实现常用正则化
2021/05/27 Python
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server
Oracle配置dblink访问PostgreSQL的操作方法
2022/03/21 PostgreSQL