簡體   English   中英

Yii中的組件(類)的目的是什么

[英]what is the purpose of a component (class) in Yii

我不了解Yii FW中使用的零部件
有一個具體的(現實生活中)的例子為什么我應該使用它?

框架由組件組成。 Yii組件的基類是CComponent,它基本上是Yii中所有內容的基類。 可以通過代碼或在配置中初始化時“即時”加載組件。 您可以在Yii Guide上了解更多信息

現實生活中的例子。 如果要蓋房子,則需要某種類型的材料,因此這些磚塊或原木將成為您的組件。 您可以制作不同類型的房屋,但基本上,它們可以支撐您的房屋並提供所需的功能。

這里有一個Yii Component的例子:

class Y extends CComponent
{
    /**
    * Returns the images path on webserver
    * @return string
    */
    public static function getImagesPath()
    {
        return Yii::app()->getBasePath().DIRECTORY_SEPARATOR.'images';
    }
}

現在,我可以使用此類檢查應用程序使用的資源: $y = new Y; $y->stats(); $y = new Y; $y->stats(); 另外,如果我創建一個特殊的CBehavior子類:

class YBehavior extends CBehavior {
        /**
         * Shows the statistics of resources used by application
         * @param boolean $return defines if the result should be returned or send to output
         * @return string
         */
        public function stats($return = false)
        {
            $stats = '';
            $db_stats = Yii::app()->db->getStats();

            if (is_array($db_stats)) {
                $stats = 'Requests completed: '.$db_stats[0].' (in '.round($db_stats[1], 5).' sec.)<br />';
            }

            $memory = round(Yii::getLogger()->memoryUsage/1024/1024, 3);
            $time = round(Yii::getLogger()->executionTime, 3);

            $stats .= 'Memory used: '.$memory.' Mb<br />';
            $stats .= 'Time elapsed: '.$time.' сек.';

            if ($return) {
                return $stats;
            }

            echo $stats;
        }
}

然后將此行為應用於我的組件: $y->attachBehavior('ybehavior', new YBehavior); 現在我可以在我的Y類中使用stats方法: $y->stats()

這是可能的,因為Yii中CComponent的每個子類都使您可以使用行為,事件,getter和setter等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM