本文目錄一覽:
- 1、怎麼在PHP中定義和使用接口interface
- 2、php接口概念?????
- 3、php中的接口是指什麼?
- 4、php接口開發教程
- 5、php中如何調用接口以及編寫接口代碼詳解
- 6、php 寫接口一般遵循什麼規範,或者標準。
怎麼在PHP中定義和使用接口interface
1、接口的定義:
接口:一種成員屬性為抽象的特殊抽象類,在程序中同為規範的作用
2、其實他們的作用很簡單,當有很多人一起開發一個項目時,可能都會去調用別人寫的一些類,那你就會問,我怎麼知道他的某個功能的實現方法是怎麼命名的呢,這 個時候PHP接口類interface就起到作用了,當我們定義了一個接口類時,它裡面的方式是下面的子類必須實現的,比如 :
interface Shop
{
public function buy($gid);
public function sell($gid);
public function view($gid);
}
我聲明一個shop接口類,定義了三個方法:買(buy),賣(sell),看(view),那麼繼承此類的所有子類都必須實現這3個方法少一個都 不行,如果子類沒有實現這些話,就無法運行。實際上接口類說白了,就是一個類的模板,一個類的規定,如果你屬於這類,你就必須遵循我的規定,少一個都不 行,但是具體你怎麼去做,我不管,那是你的事,如:
class BaseShop implements Shop { public function buy($gid) { echo(‘你購買了ID為 :’.$gid.’的商品’); } public function sell($gid) { echo(‘你賣了ID為 :’.$gid.’的商品’); } public function view($gid) { echo(‘你查看了ID為 :’.$gid.’的商品’); } }
結論 : PHP接口類interface就是一個類的領導者,指明方向,子類必須完成它指定方法。這樣不同的開發者就不要去了解別人怎麼命名相應的方法。
3、php中使用接口(interface)實現多重繼承:
我們都知道PHP中的類(class)是單繼承的,那是不是就沒有辦法實現多重繼承了呢?答案是否定的.我們可以通過其它特殊的方式實現類的多重 繼承,比如使用接口(interface)實現,只要把類的特徵抽象為接口,並通過實現接口的方式讓對象有多重身份,通過這樣就可以模擬多重繼承了。
下面是一個用接口(interface)實現多重繼承的例子,源代碼如下:
?php
interface UserInterface{ //定義User的接口
function getname();
}
interface TeacherInterface{ //teacher相關接口
function getLengthOfService();
}
class User implements UserInterface { //實現UserInterface接口
private $name = “tom”;
public function getName(){
return $this-name;
}
}
class Teacher implements TeacherInterface { //實現TeacherInterface接口
private $lengthOfService = 5; // 工齡
public function getLengthOfService(){
return $this-lengthOfService;
}
}
// 繼承自User類,同時實現了TeacherInterface接口.
class GraduateStudent extends User implements TeacherInterface {
private $teacher ;
public function __construct(){
$this-teacher = new Teacher();
}
public function getLengthOfService(){
return $this-teacher-getLengthOfService();
}
}
class Act{
//注意這裡的類型提示改成了接口類型
public static function getUserName(UserInterface $_user){
echo “Name is ” . $_user-getName() .”br”;
}
//這裡的類型提示改成了TeacherInterface類型.
public static function getLengthOfService(TeacherInterface $_teacher){
echo “Age is ” .$_teacher-getLengthOfService() .”br”;
}
}
$graduateStudent = new GraduateStudent();
Act::getUserName($graduateStudent);
Act::getLengthOfService($graduateStudent);
//結果正如我們所要的,實現了有多重身份的一個對象.
?
示例運行結果如下:
Name is tom
Age is 5
4、接口類和抽象類的區別
抽象類 :1.類中至少有一個抽象方法
2.前面加abstract
接口: 1.成員屬性為常量const
2.前面不用加abstract
3.類中全部為抽象方法,接口抽象方法為public
5、接口類和抽象類 共同點:
1.本身不能被實例化,必須繼承或者引用
2.繼承和引用後,抽象方法必須重載才能實例化
關鍵字 interface.引用關鍵字 implements
php接口概念?????
interface面向對象編程的一個重要思想接口是一個類的抽象 在接口中只定義方法卻不是先方法interface Ibook {function ready();function weite();} 累如果要實現接口就必須 寫出接口中所有的方法class myBook implements Ibook{function ready(){echo “ready()”;}function write(){echo “write()”;}}接口在代碼中起規範代碼作用但是php中對接口的支持沒有java C#等完全面向對象語言的強大
php中的接口是指什麼?
接口interface是一個規定,給人繼承用的東西,有點像抽象類。
接口定義了實現某種服務的一般規範,聲明了所需的函數和常量,但不指定如何實現。之所以不給出實現的細節,是因為不同的實體可能需要用不同的方式來實現公共的方法定義。關鍵是要建立必須實現的一組一般原則,只有滿足了這些原則才能說實現了這個接口。
擴展資料
PHP接口(interface)的特點 :
1、接口的方法必須是公開的。
2、接口的方法默認是抽象的,所以不在方法名前面加abstract。
3、接口可以定義常量,但不能定義成員屬性,常量的定義和用法和類中常量一樣。
4、類可以實現多個接口(相當於把多個功能集於一身,如手機實現了小靈通、MP3、MP4的功能)
5、接口也可以繼承接口。
PHP同大多數的面向對象語言一樣,並不支持多重繼承。如果需要實現多重繼承功能,在PHP中,可以通過接口,它是PHP解決多重繼承問題的方法,在php5.4版本之後有個類的新特性trait,有興趣的可以百度下。
php接口開發教程
PHP與大多數面向對象編程語言一樣,不支持多重繼承.也就是說每個類只能繼承一個父類.為了解決這個問題,PHP引入了接口,接口的思想是指定了一個實現了該接口的類必須實現的一系列方法.接口是一種特殊的抽象類,抽象類又是一種特殊的類,所以接口也是一種特殊的類,為什麼說接口是一種特殊的抽象類呢?如果一個抽象類裡面的所有的方法都是抽象方法,那麼我們就換一種聲明方法使用“接口“;也就是說接口裡面所有的方法必須都是聲明為抽象方法,另外接口裡面不能聲明變量(但可聲明常量constant),而且接口裡面所有的成員都是public權限的。所以子類在實現的時候也一定要使用public權限實限。
聲明一個類的時候我們使用的關鍵字是”class”,而接口一種特殊的類,使用的關鍵字是“interface”;
類的定義: class 類名{ … } ,接口的聲明:interface 接口名{ …}
代碼
代碼
?php
//定義一個接口使用interface關鍵字,“One”為接口名稱
interface One
{
//定義一個常量
const constant = ‘constant value’;
//定義了一個抽象方法”fun1”
public function fun1();
//定義了抽象方法”fun2”
public function fun2();
}
?
上例中定義了一個接口”one”,裡面聲明了兩個抽象方法“fun1”和”fun2”,因為接口裡面所有的方法都是抽象方法,所以在聲明抽象方法的時候就不用像抽象類那樣使用”abstract”這個關鍵字了,默認的已經加上這個關鍵字,另外在接口裡邊的”public”這個訪問權限也可以去掉,因為默認就是public的,因為接口裡所有成員都要是公有的,所在對於接口裡面的成員我們就不能使用“private”的和”protected”的權限了,都要用public或是默認的。另外在接口裡面我們也聲明了一個常量“constant“, 因為在接口裡面不能用變量成員,所以我們要使用const這個關鍵字聲明。
因為接口是一種特殊的抽象類,裡面所有的方法都是抽象方法,所以接口也不能產生實例對象; 它也做為一種規範,所有抽象方法需要子類去實現。
我們可以使用”extends”關鍵字讓一個接口去繼承另一個接口:
?php
//使用”extends”繼承另外一個接口
interface Two extends One
{
function fun3();
function fun4();
}
?
而我們定義一接口的子類去實現接口中全部抽象方法使用的關鍵字是”implements”,而不是我們前面所說的”extends”;
代碼
?php
//使用“implements”這個關鍵字去實現接口中的抽象方法 接口和類之間
class Three implements One
{
function fun1()
{
…
}
function fun2()
{
…
}
}
//實現了全部方法,我們去可以使用子類去實例化對象了
$three=new Three();
?
我們也可以使用抽象類,去實現接口中的部分抽象方法,但要想實例化對象,這個抽象類還要有子類把它所有的抽象方法都實現才行;
在前面我們說過,PHP是單繼承的,一個類只能有一父類,但是一個類可以實現多個接口,就相當於一個類要遵守多個規範,就像我們不僅要遵守國家的法律,如果是在學校的話,還要遵守學校的校規一樣;
?php
//使用implements實現多個接口
class Four implemtns 接口一, 接口二, ….
{
//必須把所有接口中的方法都要實現才可以實例化對象。
}
?
PHP中不僅一個類可以實現多個接口,也可以在繼承一個類的同時實現多個接口, 一定要先繼承類再去實現接口;
?php
//使用extends繼承一個類,使用implements實現多個接口
class Four extends 類名一 implemtns 接口一, 接口二, ….
{
//所有接口中的方法都要實現才可以實例化對象
………
}
?
php中如何調用接口以及編寫接口代碼詳解
可以用curl獲取借樓的信息。
所謂接口,就是提供一個url,只要你滿足它要求的參數,就能得到你要的數據。比如你拿到一個接口,帶上所需的參數,複製到地址欄同樣能得到。不過最好用程序得到。file_get_contents也可以用,不過有局限性。所以我建議用curl。給你一個函數,挺好用的。
function request($url,$https=true,$method=’GET’,$data=null){
$ch = curl_init();//初始化,得到資源
curl_setopt($ch, CURLOPT_URL,$url); //請求數據的路徑
curl_setopt($ch, CURLOPT_HEADER,false);//是否輸出頭
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不直接輸出結果
//curl_setopt ($ch, CURLOPT_SAFE_UPLOAD, 0);//兼容php之後的版本
if($https){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //是否驗證主機
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //是否進行證書驗證
}
if($method==’POST’){
curl_setopt($ch, CURLOPT_POST, true); //POST傳輸
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //傳輸數據
}
$content_json = curl_exec($ch);
if ($content_json === false) {
return “網絡請求出錯: ” . curl_error($ch);
}
curl_close($ch);
return $content_json;
}
php 寫接口一般遵循什麼規範,或者標準。
interface面向對象編程的一個重要思想接口是一個類的抽象 在接口中只定義方法卻不是先方法interface Ibook {function ready();function weite();} 累如果要實現接口就必須 寫出接口中所有的方法class myBook implements Ibook{function ready(){echo “ready()”;}function write(){echo “write()”;}}接口在代碼中起規範代碼作用但是php中對接口的支持沒有java C#等完全面向對象語言的強大
原創文章,作者:QFVJE,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/316337.html