当前位置: 首页 > 编程笔记 >

Yii2中YiiBase自动加载类、引用文件方法分析(autoload)

甘兴学
2023-03-14
本文向大家介绍Yii2中YiiBase自动加载类、引用文件方法分析(autoload),包括了Yii2中YiiBase自动加载类、引用文件方法分析(autoload)的使用技巧和注意事项,需要的朋友参考一下

本文实例分析了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相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

 类似资料:
  • 本文向大家介绍PHP 自动加载类原理与用法实例分析,包括了PHP 自动加载类原理与用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP 自动加载类原理与用法。分享给大家供大家参考,具体如下: 类的自动加载 (Autoloading Classes) 在编写面向对象(OOP) 程序时,很多开发者为每个类新建一个 PHP 文件。 这会带来一个烦恼:每个脚本的开头,都需要包含(in

  • 本文向大家介绍Yii2中添加全局函数的方法分析,包括了Yii2中添加全局函数的方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii2中添加全局函数的方法。分享给大家供大家参考,具体如下: 方法一 这种方法就是直接在入口文件web/index.php里面写函数,示例代码如下: 这个方法虽然可以实现,但是本人不推荐,因为改了框架本身的代码,而且如果全局函数多了的话,也不好管理。 方法

  • 本文向大家介绍YII2框架中添加自定义模块的方法实例分析,包括了YII2框架中添加自定义模块的方法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了YII2框架中添加自定义模块的方法。分享给大家供大家参考,具体如下: 有些时候系统功能过于复杂,这时我们需要通过模块把一些功能区分开来,便于管理与维护。 我用的是Yii2的基本应用程序模板,程序其实已经给我们提供了一个模块,就是app本身

  • 问题内容: 这就是我自动加载文件夹中所有类的方式, 但是我的文件夹中也有类,我也想自动加载它们-我该怎么办?我应该复制上面的自动加载并仅将路径更改为(但是不是重复吗?)? 谢谢。 编辑: 这些是我在控制器文件夹中的类文件名: 这些是我在模型文件夹中的类文件名: 通常这就是我命名控制器类类的方式(我使用下划线和小写), 这通常是我为模型类类命名的方式(我使用下划线和小写), 问题答案: 您应该命名您

  • Yii 依靠类自动加载机制来定位和包含所需的类文件。 它提供一个高性能且完美支持PSR-4 标准 的自动加载器。 该自动加载器会在引入框架文件 Yii.php 时安装好。 注意: 为了简化叙述,本篇文档中我们只会提及类的自动加载。 不过,要记得文中的描述同样也适用于接口和Trait(特质)的自动加载哦。 使用 Yii 自动加载器 要使用 Yii 的类自动加载器,你需要在创建和命名类的时候遵循两个简

  • 本文向大家介绍Yii2框架中日志的使用方法分析,包括了Yii2框架中日志的使用方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii2框架中日志的使用方法。分享给大家供大家参考,具体如下: Yii2和Yii1.x的区别 Yii2里面日志的使用方法和Yii 1.x并不相同, 在Yii 1.x中,记录日志的方法为 后者仅在调试模式下记录日志。 这里的log方法是YiiBase的静态方法