1

Yii FW で使用されているComponentピースがわかりません。
それを使用する必要がある具体的な (実際の) 例はありますか?

4

1 に答える 1

5

フレームワークはコンポーネントで構成されています。Yii コンポーネントの基本クラスは、基本的に Yii のすべての基本クラスである CComponent です。コンポーネントは、コードで「オンザフライ」で、または構成での開始時にロードできます。詳細については、Yii ガイドを参照してください。

実際の例。家を建てる場合、何らかの材料が必要になるため、それらのレンガや丸太がコンポーネントになります。さまざまな種類のものを作ることができますが、基本的には家を維持し、必要な機能を提供します.

ここに Yii コンポーネントの例があります:

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(); また、特別な 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); で、メソッド stats を Y クラスで使用できます。 $y->stats()

これが可能になるのは、Yii の CComponent のすべてのサブクラスが、ビヘイビアー、イベント、ゲッターとセッターなどを使用する可能性を提供するからです。

于 2011-09-14T10:32:55.173 に答える