亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
PHP課程 / Trait

Trait

PHP - 什么是 Trait(特性)?

PHP 僅支持單繼承:一個(gè)子類只能從一個(gè)父類繼承。

那么,如果一個(gè)類需要繼承多個(gè)行為怎么辦?OOP 中的 Trait(特性)解決了這個(gè)問題。

Trait 用于聲明可以在多個(gè)類中使用的方法。Trait 可以有方法和抽象方法,這些方法可以在多個(gè)類中使用,并且這些方法可以有任何訪問修飾符(public、private 或 protected)。

Trait 使用 trait 關(guān)鍵字聲明:

語法

<?php
trait TraitName {
  // 一些代碼...
}
?>

要在類中使用 trait,請(qǐng)使用 use 關(guān)鍵字:

語法

<?php
class MyClass {
  use TraitName;
}
?>

讓我們看一個(gè)例子:

實(shí)例

<?php
trait message1 {
public function msg1() {
    echo "OOP is fun! ";
  }
}

class Welcome {
  use message1;
}

$obj = new Welcome();
$obj->msg1();
?>
運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例

例子解釋

在這里,我們聲明了一個(gè) trait:message1。然后,我們創(chuàng)建了一個(gè)類:Welcome。該類使用了這個(gè) trait,trait 中的所有方法都將在該類中可用。

如果其他類需要使用 msg1() 函數(shù),只需在這些類中使用 message1 trait 即可。這減少了代碼重復(fù),因?yàn)椴恍枰槐橛忠槐榈刂匦侣暶飨嗤姆椒ā?/p>

PHP - 使用多個(gè) Trait

讓我們?cè)倏匆粋€(gè)例子:

實(shí)例

<?php
trait message1 {
  public function msg1() {
    echo "OOP is fun! ";
  }
}

trait message2 {
  public function msg2() {
    echo "OOP reduces code duplication!";
  }
}

class Welcome {
  use message1;
}

class Welcome2 {
  use message1, message2;
}

$obj = new Welcome();
$obj->msg1();
echo "<br>";

$obj2 = new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>
運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例

例子解釋

在這里,我們聲明了兩個(gè) trait:message1message2。然后,我們創(chuàng)建了兩個(gè)類:WelcomeWelcome2。第一個(gè)類(Welcome)使用了 message1 trait,而第二個(gè)類(Welcome2)使用了 message1message2 兩個(gè) trait(多個(gè) trait 之間用逗號(hào)分隔)。