首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Yii 框架組件化機制核心知識:屬性、事件、行為三大支柱

     編輯:PHP 相關知識

組件基礎:繼承體系與實例化規範

Yii 組件為 yii\base\Component 或子類實例,具備屬性、事件、行為三大特性。若不需事件與行為,可繼承輕量級 yii\base\Object 僅保留屬性支援。繼承時需遵循建構子規範:接收 $config 陣列為最後參數並傳遞給父類,init() 方法開頭呼叫 parent::init()。

class MyClass extends Object {
    public $prop1; public $prop2;
    public function __construct($param1, $param2, $config = []) {
        parent::__construct($config);
    }
    public function init() {
        parent::init(); // 配置生效後初始化
    }
}

// 兩種實例化方式
$component = new MyClass(1, 2, ['prop1' => 3, 'prop2' => 4]);
$component = \Yii::createObject(['class' => MyClass::className(), 'prop1' => 3], [1, 2]);

CWebApplication 核心組件與配置映射

應用物件為前端控制器,依配置文件載入輔助組件。配置項對應規則:公共成員變量直接賦值、Setter 方法自動調用(不區分大小寫)。核心組件分兩類註冊:

  • CWebApplication 註冊:request、response、session、urlManager、clientScript 等
  • CApplication 註冊:db、cache、log、authManager、errorHandler 等

組件屬性配置通用發現法

掌握三步驟即可靈活配置任意組件:

  1. 確認組件使用類別(核心組件預設、自定義需指定 class)
  2. 查閱類別公共成員變量(含繼承自父類)
  3. 查閱 Setter 方法定義的屬性(含繼承)
// CDbConnection 可配置屬性範例
'components' => [
    'db' => [
        'class' => 'myCDbConnection', // 自定義類別
        'connectionString' => 'mysql:host=localhost;dbname=test',
        'username' => 'root',
        'charset' => 'utf8',
        'tablePrefix' => 'tbl_',
        'enableProfiling' => true, // 對應 setEnableProfiling()
    ],
    'mydb' => [ // 多資料庫連線
        'class' => 'myDbConnection',
        'connectionString' => 'mysql:host=localhost;dbname=test2',
    ]
]

組件存取與自定義擴展

執行期透過 Yii::app()->getComponent('urlManager') 或魔術方法 Yii::app()->urlManager 獲取實例(延遲實例化)。自定義組件只需在 components 配置指定類別與屬性,即可替換核心組件或新增業務組件,充分發揮 Yii 組件化架構的擴展優勢。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved