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

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

青灯夜游
青灯夜游転載
2020-04-23 09:19:362920ブラウズ

この記事では、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 までご連絡ください。