2014-09-26 49 views
1

YiiBase类如何包含函数“createApplication”中所需的文件?YiiBase类如何包含文件

public static function createApplication($class,$config=null) 
    { 
      return new $class($config); 
    } 

我找不到路YiiBase包括“CWebApplication.php”创建Yii应用

回答

2

YiiBase类时,在文件的最后,你可以看到:

spl_autoload_register(array('YiiBase','autoload')); 

这将“绑定”魔术方法方法YiiBasehttp://php.net/manual/fr/function.autoload.php

在这种YiiBaseautoload方法,我们可以看到它使用_coreClasses $变量来尝试包括被问的类。

... 
if(isset(self::$classMap[$className])) 
    include(self::$classMap[$className]); 
elseif(isset(self::$_coreClasses[$className])) 
    include(YII_PATH.self::$_coreClasses[$className]); 
... 

而且这个变量包含所有的核心警予类:

private static $_coreClasses=array(
    'CApplication' => '/base/CApplication.php', 
    'CApplicationComponent' => '/base/CApplicationComponent.php', 
    'CBehavior' => '/base/CBehavior.php', 
    'CComponent' => '/base/CComponent.php', 
    'CErrorEvent' => '/base/CErrorEvent.php', 
    'CErrorHandler' => '/base/CErrorHandler.php', 
    ... 
);