当前位置: 移动技术网 > IT编程>开发语言>PHP > Yii2中YiiBase自动加载类、引用文件方法分析(autoload)

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

2017年12月12日  | 移动技术网IT编程  | 我要评论

本文实例分析了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程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网