首頁 後端開發 php教程 詳解在PHP的Yii框架中使用行為Behaviors的方法

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

Jul 29, 2016 am 08:57 AM
base behavior component

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

// 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教程有興趣的朋友有所幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Base DEX龍頭 :Aerodrome VS Curve Base DEX龍頭 :Aerodrome VS Curve Mar 26, 2024 pm 04:31 PM

Velodrome模型是受veCRV啟發的,旨在實現DEX三大關鍵參與者之間更優越的一致性,包括流動性提供者(LPs)、代幣持有者以及需要流動性的項目。然而,許多DeFi領域的參與者仍未完全理解其內在原因。透過深入閱讀本文,您將能夠擺脫這一困境,深入了解其中的奧秘。今天我們將探討Velodrome/Aerodrome,在DeFi領域中屬於一個真正成功的案例。本文將對這兩種模式進行比較,並解釋Velodrome是如何在veCRV模型上進行改進的,以及這些微小差異帶來了哪些重大影響。首先,讓我聲明

golang中使用正規表示式驗證輸入是否為合法的base64字串 golang中使用正規表示式驗證輸入是否為合法的base64字串 Jun 24, 2023 am 10:01 AM

在Golang程式設計中,使用正規表示式驗證輸入是否為合法的base64字串是一個相對常見的需求。對於開發者而言,透過使用正規表示式可以快速且準確地驗證使用者輸入是否正確。本文將介紹如何使用Golang中的正規表示式來驗證輸入是否為合法的base64字串。從基本語法開始在Golang中,使用正規表示式需要使用"regexp"函式庫。該庫提供了"Compile"和"

如何使用Java中的Base64函數進行編碼和解碼 如何使用Java中的Base64函數進行編碼和解碼 Jun 26, 2023 pm 02:24 PM

在java程式設計中,經常需要將二進位資料轉換為文字格式進行傳輸,而Base64編碼正是一種常用的轉換方式。 Base64將三個位元組的資料轉換成四個位元組的文字數據,文字資料由64個字符組成,它只包含可列印字符,因此可以在電子郵件,HTTP請求封包等協定中傳輸。 Java提供了Base64編碼和解碼的API,我們可以很方便地進行資料的轉換。本文將介紹Java中如何使用

面試官:@Configuration 和 @Component 的區別 面試官:@Configuration 和 @Component 的區別 Aug 15, 2023 pm 04:29 PM

呼叫@Configuration類別中的@Bean註解的方法,傳回的是同一個範例;而呼叫@Component類別中的@Bean註解的方法,傳回的是一個新的實例。

vue3怎麼使用defineAsyncComponent與component標籤實作動態渲染元件 vue3怎麼使用defineAsyncComponent與component標籤實作動態渲染元件 May 12, 2023 pm 05:55 PM

一、基礎的動態引入元件:簡單的動態引入的意思是,前端知道要引入哪些元件,將多個元件引入到父元件中,但不渲染它,滿足一定條件後,才去在某個位置渲染指定的組件。 import{reactive,ref,shallowReactive,onActivated,defineAsyncComponent,}from'vue';constcustomModal=defineAsyncComponent(()=>import('./modal/CustomM

Vue 中使用 mixin、extend、component 等 API 實作元件客製化的技巧 Vue 中使用 mixin、extend、component 等 API 實作元件客製化的技巧 Jun 25, 2023 pm 03:28 PM

Vue.js是一個流行的前端框架,它提供了許多API用於組件的客製化。本文將介紹Vue中mixin、extend、component等API,幫助您掌握元件客製化的技巧。 mixinmixin是Vue中重複使用元件程式碼的一種方式。它允許我們將已經編寫的程式碼重複使用到不同的元件中,從而減少重複程式碼的編寫。例如,我們可以使用mixin來幫助我們在多個群組

Base Dawgz ($DAWGZ) 多鏈代幣今天在去中心化交易所推出 Base Dawgz ($DAWGZ) 多鏈代幣今天在去中心化交易所推出 Sep 06, 2024 am 06:34 AM

Base 的第一個多鏈代幣 Base Dawgz ($DAWGZ) 今天在去中心化交易所推出。 $DAWGZ 於歐洲中部時間 18:00 在 DEX 上首次亮相

如何使用PHP將Base64格式的圖片上傳到七牛雲端儲存並產生縮圖? 如何使用PHP將Base64格式的圖片上傳到七牛雲端儲存並產生縮圖? Sep 05, 2023 am 08:48 AM

如何使用PHP將Base64格式的圖片上傳到七牛雲端儲存並產生縮圖?引言:隨著網路的發展,圖片的應用越來越廣泛,而圖片的處理也成為了一個常見的需求。七牛雲端儲存提供了便利的圖片儲存和處理服務,本文將介紹如何使用PHP將Base64格式的圖片上傳到七牛雲端存儲,並且產生縮圖。步驟一:安裝必要的依賴在開始之前,我們需要確保系統已經安裝了PHP和Composer(

See all articles