詳解在PHP的Yii框架中使用行為Behaviors的方法

WBOY
發布: 2016-07-29 08:57:33
原創
1031 人瀏覽過

一個綁定了行為的類,表現起來是這樣的:

// Step 1: 定义一个将绑定行为的类
class MyClass extends yii\base\Component
{
  // 空的
}

// Step 2: 定义一个行为类,他将绑定到MyClass上
class MyBehavior extends yii\base\Behavior
{
  // 行为的一个属性
  public $property1 = 'This is property in MyBehavior.';

  // 行为的一个方法
  public function method1()
  {
    return 'Method in MyBehavior is called.';
  }
}

$myClass = new MyClass();
$myBehavior = new MyBehavior();

// Step 3: 将行为绑定到类上
$myClass->attachBehavior('myBehavior', $myBehavior);

// Step 4: 访问行为中的属性和方法,就和访问类自身的属性和方法一样
echo $myClass->property1;
echo $myClass->method1();

登入後複製

上面的代碼你不用全都看懂,雖然你可能已經用腳趾頭猜到了這些代碼的意思, 但這裡你只需要記住行為中的屬性和方法可以被所綁定的類別像存取自身的屬性和方法一樣直接存取就OK了。 程式碼中, $myClass 是沒有 property1 method() 成員的。這兩位是 $myBehavior 的成員。 但是,透過 attachBehavior() 將行為綁定到物件之後, $myCalss 就好像練成了吸星大法、化功大法,表現的財大氣粗,將別人的屬性和方法都變成了自己的。

另外,從上面的程式碼中,你還要掌握使用行為的大致流程:

  • 從yiibaseComponent 派生自己的類,以便使用行為;
  • 從yiibaseBehavior 派生自己的行為類,定義裡面行為涉及到的屬性、方法;
  • 將Component和Behavior綁定起來;
  • 像使用Component自身的屬性和方法一樣,盡情使用行為中定義的屬性和方法。

使用行為,必須像前文描述的一樣先把它附加到 yiibaseComponent 類別或其子類別。一旦行為附加到元件,就可以直接使用它。

行為附加到元件後,可以透過元件存取一個行為的公共成員變數或getter 和setter 方法定義的屬性:

// "prop1" 是定义在行为类的属性
echo $component->prop1;
$component->prop1 = $value;
类似地也可以调用行为的公共方法:

// foo() 是定义在行为类的公共方法
$component->foo();

登入後複製

如你所見,儘管$component 未定義prop1 和foo() ,它們用起來也像組件自己定義的一樣。

如果兩個行為都定義了一樣的屬性或方法,並且它們都附加到同一個元件,那麼首先附加上的行為在屬性或方法被存取時有優先權。

附加行為到組件時的命名行為,可以使用這個名稱來訪問行為對象,如下所示:

$behavior = $component->getBehavior('myBehavior');
登入後複製

也能獲取附加到這個組件的所有行為:

$behaviors = $component->getBehaviors();
登入後複製

移除行為

要移除行為,可以呼叫yiibaseComponent::detachBehavior() 方法用行為相關聯的名字實現:

$component->detachBehavior('myBehavior1');
登入後複製

也可以移除全部行為:

$component->detachBehaviors();
登入後複製

以上就介紹了詳解在PHP的Yii框架中使用行為Behaviors的方法,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!