2014-09-26 5 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')); 

Это будет «связывать» магический метод с методом autoloadYiiBase. http://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]); 
... 

И эта переменная содержит все основные YII классов:

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', 
    ... 
); 
Смежные вопросы