首頁 >後端開發 >php教程 >PHP介面多繼承及tarits實現多繼承效果的方法_php技巧

PHP介面多繼承及tarits實現多繼承效果的方法_php技巧

jacklove
jacklove原創
2018-07-02 18:01:461875瀏覽

這篇文章主要介紹了PHP介面多繼承及tarits實現多重繼承效果的方法,結合實例形式分析了php基於介面的多繼承及PHP5.4中引入的tarits實現多繼承功能簡單操作技巧,需要的朋友可以參考下

本文實例講述了PHP介面多繼承及tarits實現多繼承效果的方法。分享給大家供大家參考,具體如下:

介面多繼承

在PHP的物件導向中,介面可以繼承介面。 PHP類別只能繼承一個父類別(單繼承),但是介面可以實作多重繼承,可以繼承一個或多個介面。當然介面的繼承也是和類別的繼承一樣使用extends關鍵字,要多個繼承的話只要用逗號把繼承的介面隔開即可。

要注意的是當你介面繼承其它介面時候,直接繼承父介面的靜態常數屬性和抽象方法,所以類別實作介面時必須實作所有相關的抽象方法。

以下舉例說明:

1.繼承單一介面

<?php
interface testA{
  function echostr();
}
interface testB extends testA{
  function dancing($name);
}
class testC implements testB{
  function echostr(){
    echo "接口继承,要实现所有相关抽象方法!";
    echo "<br>";
  }
  function dancing($name){
    echo $name."正在跳舞!";
  }
}
$demo=new testC();
$demo->echostr();
$demo->dancing("模特");
//运行结果
/**
  接口继承,要实现所有相关抽象方法
  模特正在跳舞!
**/

2.繼承多重介面

<?php
interface testA{
  function echostr();
}
interface testB{
  function dancing($name);
}
interface testC extends testA,testB{
  function singing($nickname);
}
class testD implements testC{
  function echostr(){
    echo "接口继承,要实现父接口所有相关方法!";
    echo "<br />";
  }
  function dancing($name){
    echo $name."正在跳舞!";
    echo "<br />";
  }
  function singing($nickname){
    echo $nickname."正在唱歌!";
  }
}
$demo=new testD();
$demo->echostr();
$demo->dancing("模特");
$demo->singing("周杰伦");
//运行结果
/**
  接口继承,要实现父接口所有相关方法!
  模特正在跳舞!
  周杰伦正在唱歌!
**/

#tarits多繼承

多繼承裡一個類別可以同時繼承多個父類,組合多個父類的功能C 裡就是使用這種模型來增強集成的靈活性的,但多重繼承過於靈活,並且會帶來“菱形繼承”,故使用起來有不少困難,模型變的複雜起來,現在大多數語言都放棄了多重繼承這個模型。
但有的場合想用多繼承,但PHP又沒多繼承,於是就發明了這樣的一個東西。

Traits可以理解為一組能被不同的類別都能呼叫的方法集合,但Traits不是類別!不能被實例化。先來例子看下語法:

<?php
trait myTrait{
  function traitMethod1(){}
  function traitMethod2(){}
}
//然后是调用这个traits,语法为:
class myClass{
  use myTrait;
}
//这样就可以通过use myTraits,调用Traits中的方法了,比如:
$obj = new myClass();
$obj-> traitMethod1 ();
$obj-> traitMethod2 (); 
>

具體的介紹跟使用可以看官方的介紹。

您可能感興趣的文章:

thinkPHP5框架資料庫連貫運算之cache()用法詳解

thinkPHP3.2實作分頁自訂樣式的方法講解

#Laravel框架Blob實作的多圖上傳功能範例解析

#

以上是PHP介面多繼承及tarits實現多繼承效果的方法_php技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn