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

5年以前  |  阅读数:197 次  |  编程语言:PHP 

本文实例分析了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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
Java生成UUID
PHP自定义函数获取搜索引擎来源关键字的方法
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
指定应用ID以获取对应的应用名称
再谈PHP中单双引号的区别详解
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例