灰太狼 2018-05-09 21:15:33 2670次浏览 1条回复 0 0 0

入口文件:$application = new yii\web\Application($config);这里都做了什么?! 如图所示:debug进入到断点处。

屏幕快照 2018-05-09 下午9.09.56.png

接下来耐心和我一起看看YII源码是怎么处理的。。。走起~ 1:new yii\web\Application,进入到 yii\web\Application 看一下,哦,原来new yii\web\Application是继承了\yii\base\Application。在进入\yii\base\Application看看,哎呀,在这里发现了构造函数,那么new yii\web\Application();其实就是执行了这里的构造函数,在构造函数这里打入断点,继续贴图。 屏幕快照 2018-05-09 下午9.14.45.png

在构造函数里发现了:Yii::$app = $this; Yii::$app,Yii::$app,Yii::$app,Yii::$app,Yii::$app。。。这个是在写Yii的时候经常用到的,原来是在这里赋值的。 调试往下走一步,看看这个Yii::$app存的是什么东西:如下图: 屏幕快照 2018-05-09 下午9.18.26.png

‌yii\web\Application::__set_state(array(
   'defaultRoute' => 'site',
   'catchAll' => NULL,
   'controller' => NULL,
   '_homeUrl' => NULL,
   'controllerNamespace' => 'app\\controllers',
   'name' => 'My Application',
   'version' => '1.0',
   'charset' => 'UTF-8',
   'language' => 'en-US',
   'sourceLanguage' => 'en-US',
   'layout' => 'main',
   'requestedRoute' => NULL,
   'requestedAction' => NULL,
   'requestedParams' => NULL,
   'extensions' => NULL,
   'bootstrap' => 
  array (
  ),
   'state' => NULL,
   'loadedModules' => 
  array (
  ),
   '_runtimePath' => NULL,
   '_vendorPath' => NULL,
   'params' => 
  array (
  ),
   'id' => NULL,
   'module' => NULL,
   'controllerMap' => 
  array (
  ),
   '_basePath' => NULL,
   '_viewPath' => NULL,
   '_layoutPath' => NULL,
   '_modules' => 
  array (
  ),
   '_components' => 
  array (
  ),
   '_definitions' => 
  array (
  ),
   '_events' => 
  array (
  ),
   '_behaviors' => NULL,
))

这一堆是什么意思?一起来分析一下:由于我不知道哪些大家知道定义的意思是什么,哪些不知道,留言吧,我不做具体解释了。 大概说一下这个变量的位置。以及后面这些变量发生了什么变化(这个是重点) 把上面的数组结构整理一下:

array(
   'defaultRoute' => 'site',
   'catchAll' => NULL,
   'controller' => NULL,
   '_homeUrl' => NULL,
   'controllerNamespace' => 'app\\controllers',
   'name' => 'My Application',
   'version' => '1.0',
   'charset' => 'UTF-8',
   'language' => 'en-US',
   'sourceLanguage' => 'en-US',
   'layout' => 'main',
   'requestedRoute' => NULL,
   'requestedAction' => NULL,
   'requestedParams' => NULL,
   'extensions' => NULL,
   'bootstrap' => 
    array (),
   'state' => NULL,
   'loadedModules' => 
    array (),
   '_runtimePath' => NULL,
   '_vendorPath' => NULL,
   'params' => 
    array (),
   'id' => NULL,
   'module' => NULL,
   'controllerMap' => 
    array (),
   '_basePath' => NULL,
   '_viewPath' => NULL,
   '_layoutPath' => NULL,
   '_modules' => 
    array (),
   '_components' => 
    array (),
   '_definitions' => 
    array (),
   '_events' => 
    array (),
   '_behaviors' => NULL,
)

未完待续。。。

您需要登录后才可以回复。登录 | 立即注册