導航:首頁 > 編程語言 > php介面怎麼實現

php介面怎麼實現

發布時間:2022-12-07 23:20:14

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中定義和使用介面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 GraateStudent 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>";
}
}
$graateStudent = new GraateStudent();
Act::getUserName($graateStudent);
Act::getLengthOfService($graateStudent);
//結果正如我們所要的,實現了有多重身份的一個對象.
?>
示例運行結果如下:
Name is tom
Age is 5
4、介面類和抽象類的區別
抽象類 :1.類中至少有一個抽象方法
2.前面加abstract
介面: 1.成員屬性為常量const
2.前面不用加abstract
3.類中全部為抽象方法,介面抽象方法為public
5、介面類和抽象類 共同點:
1.本身不能被實例化,必須繼承或者引用
2.繼承和引用後,抽象方法必須重載才能實例化
關鍵字 interface.引用關鍵字 implements

⑶ 求教:php介面實現調用

這算程序設計思想。
normaluser 為用戶類型的一種----普通用戶 只能修改自己的屬性
useradmin 是管理用戶的 用這種思路你可以很簡單的實現 統一管理不同類型的用戶,只要用戶實現了User ,你也可以很容易的建立擁有不同許可權的管理員。

⑷ 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怎麼實現多個介面同時觸發 對於先返回的數據先處理

需求描述不準確。
你是需要在客戶端同時訪問幾個介面(介面端用的php)?
1.如果是這個需求的話,客戶端js自帶非同步屬性,用ajax,同時做幾個調用,在回調里處理數據就行了,只是伺服器端,如果有session,需要確保耗時操作前寫入並關閉session,不然同一個客戶端的訪問會被session卡住(默認的文件模式的session)
2.還是需要在php代碼中同時進行多個介面並發調用,在各自返回時處理,然後整合結果輸出 ?
這種的話,php本身不支持非同步並發編程,可以考慮用nodejs或者php的擴展 swoole 之類的去做

⑹ PHP如何實現簡訊介面的調用

如下代碼示例是閱信簡訊驗證碼平台為方便客戶提供的簡訊介面請求的代碼示例,使用前還需要用戶提前申請API服務和在簡訊模板中新增加一個版塊,並且審核通過。
<?php
date_default_timezone_set('PRC'); //設置時區為東八區否則時間比北京時間早8小時

$url = ' http://IP/埠號';//介面地址
$mttime=date("YmdHis");
$name = '*******';//開通的用戶名
$password='*****************';//密碼
$post_data['name'] = $name;
$post_data['pwd'] = md5($password.$mttime);
$post_data['content'] = '【閱信簡訊平台】驗證碼888888,打死也不能告訴別人哦。';
$post_data['phone'] = '12345678901';//手機號碼
$post_data['subid'] = '';
$post_data['mttime']=$mttime;
$o = "";
foreach( $post_dataas $k => $v )
{
$o.= "$k=" . urlencode( $v ). "&" ;
}
$post_data = substr($o,0,-1);
$res = request_post($url, $post_data);
print $res;

/**

* 模擬post進行url請求
* @param string $url
* @param string $param
*/
functionrequest_post($url = '', $param = '') {
if (empty($url) || empty($param)) {
return false;
}

$postUrl= $url;
$curlPost= $param;
$ch= curl_init();//初始化curl
curl_setopt($ch,CURLOPT_URL,$postUrl);//抓取指定網頁
curl_setopt($ch,CURLOPT_HEADER, 0);//設置header
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);//要求結果為字元串且屏幕上
curl_setopt($ch,CURLOPT_POST, 1);//post提交方式
curl_setopt($ch,CURLOPT_POSTFIELDS, $curlPost);
$data= curl_exec($ch);//運行curl
curl_close($ch);

return $data;
}

⑺ PHP開發Paypal支付,支付流程和介面實現方案

近期由於要開發公司外貿商城,需要對接Paypal支付。在開發過程中發現有好多坑。文檔都是英文文檔(主要還是自己英文水平不過關)、網上找的那些翻譯過的文檔老舊、沙箱環境網站卡的要讓人崩潰。整個過程真是讓人頭大,經過各種翻天覆地的網路、google、論壇終於功夫不負有心人跑通了。下面就結合網上的文檔給大家說說如何開發Paypal支付(一個Demo),避免大家在踩坑。

3.開啟PDT設置同步回調地址(這步拿到at_token return回調使用)

3.項目根目錄下創建return.php文件

4.項目根目錄下創建cancel.php文件

目前網上的文檔感覺沒有一個整體流程詳細的介紹,而且有些比較老。本篇文章是匯總整理並加入了一些自己的改造和踩坑分享而已。文介紹了paypal支付的其中一種方式,還有一種SDK的方式,這兩種有點小區別但是整體的流程還是一樣是。等後續會和大家分享另一種方式。還請各位大佬多多指教。

⑻ 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中的介面是指什麼

介面interface是一個規定,給人繼承用的東西,有點像抽象類。

介面定義了實現某種服務的一般規范,聲明了所需的函數和常量,但不指定如何實現。之所以不給出實現的細節,是因為不同的實體可能需要用不同的方式來實現公共的方法定義。關鍵是要建立必須實現的一組一般原則,只有滿足了這些原則才能說實現了這個介面。

(9)php介面怎麼實現擴展閱讀

PHP介面(interface)的特點 :

1、介面的方法必須是公開的。

2、介面的方法默認是抽象的,所以不在方法名前面加abstract。

3、介面可以定義常量,但不能定義成員屬性,常量的定義和用法和類中常量一樣。

4、類可以實現多個介面(相當於把多個功能集於一身,如手機實現了小靈通、MP3、MP4的功能)

5、介面也可以繼承介面。

PHP同大多數的面向對象語言一樣,並不支持多重繼承。如果需要實現多重繼承功能,在PHP中,可以通過介面,它是PHP解決多重繼承問題的方法,在php5.4版本之後有個類的新特性trait,有興趣的可以網路下。

⑽ php中使用介面實現工廠設計模式的代碼

介面在php只能起到約束類的定義作用,雖不像c#/java那麼直觀,但基於oop的封裝要求,使用介面可以提高程序的可擴展性,如實現代理設計模式。
復制代碼
代碼如下:
<?php
//人類介面
interface
IHuman
{
function
GetName();
}
//男人類,實現人類介面
class
ManClass
implements
IHuman
{
//獲取姓名方法
public
function
GetName()
{
return
"I'm
man."."<br>";
}
}
//女人類,實現人類介面
class
WomanClass
implements
IHuman
{
//獲取姓名方法
public
function
GetName()
{
return
"I'm
Woman."."<br>";
}
}
//類工廠,根據需要生產不同實例對象返回
class
ManFactory
{
//根據參數獲取實例對象
public
function
GetIHuman($IHuman="man")
{
if($IHuman=="woman")
{
return
new
WomanClass();
}
else
if($IHuman=="man")
{
return
new
ManClass();
}
else
{
return
null;
}
}
//直接獲取woman類
public
function
GetWoman()
{
return
new
WomanClass();
//return
new
ManClass();
}
//直接獲取man類
public
function
GetMan()
{
return
new
ManClass();
}
}
$ManFactory=new
ManFactory();
$ManClass=$ManFactory->GetIHuman();
echo
$ManClass->GetName();
$IHuman=$ManFactory->GetIHuman("woman");
echo
$IHuman->GetName();
$Woman=$ManFactory->GetWoman();
echo
$Woman->GetName();
$Man=$ManFactory->GetMan();
echo
$Man->GetName();
?>
運行結果:
I'm
man.
I'm
Woman.
I'm
Woman.
I'm
man.

閱讀全文

與php介面怎麼實現相關的資料

熱點內容
好久不見app干什麼用的 瀏覽:143
壓縮包解壓碼對方可以更改嗎 瀏覽:256
pdf電子書製作軟體 瀏覽:888
數控三通編程 瀏覽:300
linux多終端 瀏覽:811
法律寫作pdf 瀏覽:144
國貨哪個品牌最好app 瀏覽:951
看哪個app給錢最多 瀏覽:178
編程靠經驗嗎 瀏覽:759
c教程pdf下載地址 瀏覽:573
製作視頻哪個app有瘦臉功能 瀏覽:649
linux查看線程內存 瀏覽:509
命令行簽名apk 瀏覽:92
網頁照片旋轉源碼 瀏覽:842
QQ會員頭像源碼 瀏覽:263
內核命令行 瀏覽:324
腳本提取源碼器 瀏覽:930
smo源碼 瀏覽:877
為什麼要搭建單獨伺服器 瀏覽:480
編譯器有什麼控制 瀏覽:893