yii2初探 程式啟動流程

2021-08-19 22:43:18 字數 2460 閱讀 5107

1.入口指令碼 web/index.php

2.index.php檔案分析

<?php//

定義是否開啟

debug

模式 展示除錯資訊

defined(

'yii_debug'

)ordefine(

'yii_debug'

,true);//

定義開發模式

prod | dev | test

defined(

'yii_env'

)ordefine(

'yii_env'

, 'dev');

//匯入

composer

的自動載入

require(

__dir__

. '/../../vendor/autoload.php');

//匯入

yii框架核心類

require(

__dir__

. '/../../vendor/yiisoft/yii2/yii.php');

//匯入引導程式 定義了部分別名

require(

__dir__

. '/../../common/config/bootstrap.php');

require(

__dir__

. '/../config/bootstrap.php');

//合併配置

, 後面的會覆蓋前面的

, 作為配置引數用於例項化

$config

= yii\helpers\arrayhelper::

merge

(require(

__dir__

. '/../../common/config/main.php'),

require(

__dir__

. '/../../common/config/main-local.php'),

require(

__dir__

. '/../config/main.php'),

require(

__dir__

. '/../config/main-local.php'))

;//啟動主體應用程式

(new$config

))->

run()

;

3.alias別名的定義

①預定義別名

②別名的定義

yii::setalias('@foo', $path)

yii::getalias('@foo')

③別名的使用場景

總結中...

4.類自動載入

①通過spl_autoload_register()註冊,  壓棧的效果使yii定義的自動載入函式生效,  index.php載入了yii.php檔案如下

classyii 

extends\yii\baseyii

spl_autoload_register([

'yii'

, 'autoload'],

true,

true)

;yii::

$classmap

=require(

__dir__

. '/classes.php');

yii::

$container

=newyii\di\container()

;

註冊了其父類baseyii中的autoload函式為自動載入函式, 同時定義了父類中的屬性$classmap和$container

父類中的自動載入實現

public static functionautoload

($classname)}

elseif(strpos(

$classname, '

\\') !==

false)

}else

include(

$classfile

);

Yii2 執行流程分析之 Controller

1.繼承與實現 controller 繼承於 component,並實現了 viewcontextinte ce 介面。在 controller 重要的有兩塊 action,view。2.actions public function actions 在自定義的 xxcontroller 類中可以看...

yii2框架 yii2自身的自動載入 三

上一節說完了composer的自動載入,下面我們來說一下yii2自身的自動載入。在我們的入口檔案,例如index.php,如下 comment out the following two lines when deployed to production defined yii debug or d...

yii2框架 yii2的asset資源包 十一

link license license use yii web assetbundle author qiang xue since 2.0 定義按需載入css方法,注意載入順序在最後 public static function addcss view,cssfile 將需要載入的檔案已陣列聚合...