簡単に言えば、クラスが基本クラスの属性とメソッドを統合したいが、他の基本クラスのメソッドも持ちたいという問題を解決するためにPHPで trait キーワードが使用されます。使用と合わせて。
この記事で紹介したPHPでのtraitsの使い方を見てみましょう
carName}\n"; } } class Person { public function eat() { echo "eat\n"; } } class Student extends Person { use Drive; public function study() { echo "study\n"; } } $student = new Student(); $student->study(); $student->eat(); $student->driving(); ?>
出力結果は以下の通りです:
study eat driving trait
上記の例では、Studentクラスはeatメソッドでpersonを継承しています。 Drive、運転方法、属性 carName を組み合わせます。
Trait、基底クラス、このクラスに同名のプロパティやメソッドがあった場合、最終的にどちらが保持されるのでしょうか?hello(); $student->driving(); ?>
hello student driving from drive
use Trait1, Trait2;
PHP Fatal error: Trait method hello has not been applied, because there are collisions with other trait methods on Class1 in ~/php54/trait_3.php on line 20
hello(); $Obj1->hi(); echo "\n"; $Obj2 = new Class2(); $Obj2->hello(); $Obj2->hi(); $Obj2->hei(); $Obj2->hehe(); ?>
Trait2::hello Trait1::hi Trait2::hello Trait1::hi Trait2::hi Trait1::hello
アクセス制御
を変更することです:Trait を Trait と組み合わせることもできます。 Trait は抽象メソッド、static
属性、および Static メソッドをサポートしています。テストコードは次のとおりです:sayHello(); $Obj->sayWorld(); echo $Obj->getWorld() . "\n"; HelloWorld::doSomething(); $Obj->inc(); $Obj->inc(); ?>
Hello World get World Doing something 1 2
以上が最新のPHPトレイトの使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。