php如何實現介面(php介面技術)

本文目錄一覽:

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如何開發API介面

比如一個自定義函數:function test(){echo 『hello world』;}就可以叫做 api。api 既可以是單個的函數,也可以是封裝在類里的方法,當然它們也是程序代碼。開發一個 api 的流程可以很簡單,也可以很複雜,視具體的編程任務而決定,並沒有特定的規則。比如,你需要為自己建立一個常用的函數庫,命名為 my.lib.php然後把你自己編寫的自定義函數,全部寫在這個文件裡面,那麼,你就擁有了自己的api。開發的時候,只需要引入 my.lib.php,你就可以調用自己的 api 了。這是一個比較簡單的例子。稍微複雜一點的,你可以把函數封裝在類裡面,方便繼承和重用,還可以根據函數名稱做一些程序設計,這個一句話說不清楚,給一個簡單的例子吧:class mylib{function showmy(){echo 『這是我的一個類方法』;}}調用的時候,先要實例化類,然後再調用方法。再複雜一點的就是使用類介面,區別就是介面裡面定義的只是方法原型,而你需要通過具體的類來實現介面中的函數,具體請參考 php 手冊

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

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

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/237544.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:05
下一篇 2024-12-12 12:05

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • 如何實現圖像粘貼到蒙版

    本文將從多個方面介紹圖像粘貼到蒙版的實現方法。 一、創建蒙版 首先,在HTML中創建一個蒙版元素,用於接收要粘貼的圖片。 <div id=”mask” style=”widt…

    編程 2025-04-29
  • Python熱重載技術

    Python熱重載技術是現代編程的關鍵功能之一。它可以幫助我們在程序運行的過程中,更新代碼而無需重新啟動程序。本文將會全方位地介紹Python熱重載的實現方法和應用場景。 一、實現…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Java 監控介面返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控介面返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • Django ORM如何實現或的條件查詢

    在我們使用Django進行資料庫操作的時候,查詢條件往往不止一個,一個好的查詢語句需要考慮我們的查詢要求以及業務場景。在實際工作中,我們經常需要使用或的條件進行查詢,本文將詳細介紹…

    編程 2025-04-29
  • Python包絡平滑技術解析

    本文將從以下幾個方面對Python包絡平滑技術進行詳細的闡述,包括: 什麼是包絡平滑技術? Python中使用包絡平滑技術的方法有哪些? 包絡平滑技術在具體應用中的實際效果 一、包…

    編程 2025-04-29
  • parent.$.dialog是什麼技術的語法

    parent.$.dialog是一種基於jQuery插件的彈出式對話框技術,它提供了一個方便快捷的方式來創建各種類型和樣式的彈出式對話框。它是對於在網站開發中常見的彈窗、提示框等交…

    編程 2025-04-28
  • 微信小程序重構H5技術方案設計 Github

    本文旨在探討如何在微信小程序中重構H5技術方案,以及如何結合Github進行代碼存儲和版本管理。我們將從以下幾個方面進行討論: 一、小程序與H5技術對比 微信小程序與H5技術都可以…

    編程 2025-04-28
  • Python一次性輸入10個數如何實現?

    Python提供了多種方法進行輸入,可以手動逐個輸入,也可以一次性輸入多個數。在需要輸入大量數據時,一次性輸入十個數就非常方便。下面我們從多個方面來講解如何一次性輸入10個數。 一…

    編程 2025-04-28

發表回復

登錄後才能評論