ホームページ > バックエンド開発 > PHPチュートリアル > PHP の Trait メカニズムの原理と使用法を分析する

PHP の Trait メカニズムの原理と使用法を分析する

青灯夜游
リリース: 2023-04-08 14:44:01
転載
3025 人が閲覧しました

この記事では、PHP の Trait メカニズムの原理と使用法を分析します。一定の参考値があるので、困っている友達が参考になれば幸いです。

PHP の Trait メカニズムの原理と使用法を分析する

トレイトの紹介:

1. PHP5.4 以降、PHP はトレイトと呼ばれるコード再利用メソッドを実装しました。

2. Trait は、PHP のような単一継承言語向けに用意されたコード再利用の仕組みです。

3. 単一継承言語の制限を軽減するために、Trait では開発者が異なる階層の独​​立したクラスのメソッドを自由に再利用できるようにします。

4. Trait はコードの再利用を実現し、単一継承の制限を突破します;

5. Trait はクラスですが、インスタンス化できません。

6. クラス内のメソッドが同じ名前の場合、優先順位は次のとおりです: 現在のクラス > 特性 > 親クラス;

7. 複数の特性クラスのメソッドが同じ名前である場合、他のメソッドのエイリアスとなるアクセスを指定する必要があります。

例:

trait Demo1{
 public function hello1(){
  return __METHOD__;
 }
}
trait Demo2{
 public function hello2(){
  return __METHOD__;
 }
}
class Demo{
 use Demo1,Demo2;//继承Demo1和Demo2
 public function hello(){
  return __METHOD__;
 }
 public function test1(){
  //调用Demo1的方法
  return $this->hello1();
 }
 public function test2(){
  //调用Demo2的方法
  return $this->hello2();
 }
}
$cls = new Demo();
echo $cls->hello();
echo "<br>";
echo $cls->test1();
echo "<br>";
echo $cls->test2();
ログイン後にコピー

実行結果:

Demo::hello
Demo1::hello1
Demo2::hello2
ログイン後にコピー

複数の特性メソッドが同じ名前です:

trait Demo1{
 public function test(){
  return __METHOD__;
 }
}
trait Demo2{
 public function test(){
  return __METHOD__;
 }
}
class Demo{
 use Demo1,Demo2{
  //Demo1的hello替换Demo2的hello方法
  Demo1::test insteadof Demo2;
  //Demo2的hello起别名
  Demo2::test as Demo2test;
 }
 public function test1(){
  //调用Demo1的方法
  return $this->test();
 }
 public function test2(){
  //调用Demo2的方法
  return $this->Demo2test();
 }
}
$cls = new Demo();
echo $cls->test1();
echo "<br>";
echo $cls->test2();
ログイン後にコピー

実行結果:

Demo1::test
Demo2::test
ログイン後にコピー

関連知識の詳細については、PHP 中国語 Web サイトに注目してください。 !

以上がPHP の Trait メカニズムの原理と使用法を分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート