PHP クラスのインターフェイスのアプリケーション キーワードは、インターフェイスと実装です。インターフェイスは、すべて抽象または定数の特殊な 抽象クラス を指します。すべて 渡すパラメータは、抽象クラスに似た制約と仕様として機能します。インターフェイスは、主に、そのメンバー属性がすべて抽象または定数である特別な抽象クラスです。クラス名、クラスが所有するメソッド、および渡されたパラメーターは、抽象クラスに似た制約と仕様として機能します。
クラスへのインターフェースの適用
1. キーワード: インターフェース2. インターフェースの導入と作成
インターフェース: メンバー属性はすべて抽象であるか、特別な抽象です定数のクラス。ルール:
1. クラス内のすべてのメソッドは抽象です。2. 抽象メソッドには抽象を追加する必要はありません。 3. インターフェースの抽象メソッド属性は public です。
4. メンバー属性は定数である必要があります。 フォーマットコードは次のとおりです:interface demo { const NAME = "常量对象属性"; function myfun1(); //抽象方法 function myfun2(); //抽象方法,不用具体写入逻辑 }
1. インターフェースの定義と呼び出し
<?php interface Cinema { const film = '加勒比海盗'; public function show(); } class Order implements Cinema { public function show() { echo "影院 接口开放了<br>"; } } $face = new Order(); echo $face->show(); echo Cinema::film;
第二に、パラメーターの制約が厳しいです。
<?php interface Cinema { public function show(Order $show,$num); } // 显示正常 class Order implements Cinema { public $number='0011排'; public function show(Order $show,$num) { echo $show->number.$num; } } $face= new Order(); $face->show(new Order,$num='3人');//输出 0011排3人
注: 上記の例はインターフェイス クラスを継承します。インターフェイス メソッドを呼び出すとき、渡されるパラメーターはインターフェイス内のパラメーター名と一致している必要があります。それ以外の場合は、エラーが報告されます。
3、インターフェース間の継承とインターフェースの呼び出しによるパラメータの受け渡し
<?php interface Cinema { public function show(); } interface Cinema1 extends Cinema { public function show1(Order1 $object,$num); } class Order implements Cinema1 { public function show() { echo "准备就绪<br>"; } public function show1(Order1 $object,$num) { //var_dump($object); echo $object->number."$num<br>"; } } class Order1 { public $number="0012排"; function fun(){ echo ' ================='; } } $show = new Order1; $show->fun(); $test = new Order(); $test->show(); $test->show1($show,$num='6人'); // 输出 ===============准备就绪0012排6人
1 つのインターフェースに対する 4 つの多重継承
<?php interface demo { const NAME = "电影名称"; function fun1(); function fun2(); } interface demo2 { function fun3(); function fun4(); } interface demo3 { const TEST = "这里是测试Test"; function fun5(); } class MyDemo implements demo, demo2 { function fun1() { echo "你好"; } function fun2() { echo "----------"; } function fun3() { echo "我也好<br />"; } function fun4() { echo "大家都好<br />"; } } class YourDemo extends MyDemo implements demo3 { function fun5() { echo "继承类后引用接口"; } } $p = new YourDemo; $p->fun1(); $p->fun2(); $p->fun3(); $p->fun4(); $p->fun5();
皆さんこんにちは
クラスを継承した後にインターフェースを参照する上記の例では、キーワードinterfaceを使用してインターフェースが定義されており、インターフェース内のメソッドを実装するためにキーワードimplementsが使用されていることがわかります。別の例:<?php //定义接口 interface User{ function getDiscount(); function getUserType(); } class VipUser implements User{ //VIP用户 接口实现 private $discount = 0.8; // VIP 用户折扣系数 function getDiscount() { return $this->discount; } function getUserType() { return "VIP用户"; } } class Goods{ var $price = 88; var $vc; function run(User $vc){ //定义 User 接口类型参数,这时并不知道是什么用户 $this->vc = $vc; $discount = $this->vc->getDiscount(); $usertype = $this->vc->getUserType(); echo $usertype."商品价格:".$this->price*$discount; } } $display = new Goods(); $display ->run(new VipUser); //VIP用户商品价格:70.4
抽象クラスとインターフェイスの違い
インターフェイスは特別な抽象クラスであり、次のようにすることもできます。モデルの仕様と見なされます。インターフェイスと抽象クラスの一般的な違いは次のとおりです。1. サブクラスがインターフェイスを実装する場合、必要かどうかに関係なく、インターフェイス内のすべてのメソッドを実装する必要があります。必要なメソッドを実装します。 2. インターフェイスで定義されたメソッド名が変更された場合、このインターフェイスを実装するすべてのサブクラスはメソッド名を同期的に更新する必要があり、抽象クラスのメソッド名が変更された場合、そのサブクラスの対応するメソッド名は変更されません。影響を受けます。(古いメソッドの実装と比較して) 新しいメソッドになるだけです。
3. 抽象クラスは単一でのみ継承できます。サブクラスが複数の親クラスから継承する必要がある関数を実装する必要がある場合は、インターフェイスを使用する必要があります。以上がPHPでのimplementsの使い方の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。