PHP OOP - トレイト
PHP - 特性とは?
PHPは単一の継承のみをサポートします。子クラスは、1つの親からのみ継承できます。
では、クラスが複数の動作を継承する必要がある場合はどうなるでしょうか? OOPトレイトはこの問題を解決します。
トレイトは、複数のクラスで使用できるメソッドを宣言するために使用されます。トレイトには、複数のクラスで使用できるメソッドと抽象メソッドを含めることができ、メソッドには任意のアクセス修飾子(public、private、または protected)を含めることができます。
特性は、trait
キーワード:
構文
<?php
trait TraitName {
// some code...
}
?>
クラスで特性を使用するには、use
キーワード:
構文
<?php
class MyClass {
use TraitName;
}
?>
例を見てみましょう:
例
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
class Welcome {
use message1;
}
$obj = new Welcome();
$obj->msg1();
?>
例の説明
ここで、1 つのトレイト、message1を宣言します。次に、クラスを作成します。クラスは特性を使用し、特性のすべてのメソッドがクラスで使用可能になります。
他のクラスがmsg1()関数を使用する必要がある場合は、単にそれらのクラスでmessage1トレイトを使用してください。これにより、同じメソッドを何度も再宣言する必要がないため、コードの重複が減少します。
PHP - 複数の特性の使用
別の例を見てみましょう。
例
<?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();
?>
例の説明
ここでは、message1とmessage2の2つのトレイトを宣言します。次に、WelcomeとWelcome2の2つのクラスを作成します。最初のクラス(Welcome)はmessage1特性を使用し、2番目のクラス (Welcome2)はmessage1とmessage2の両方の特性を使用します(複数の特性はコンマで区切ります)。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。