• <del id="a8uas"></del>
    • 千鋒教育-做有情懷、有良心、有品質的職業教育機構

      400-811-9990
      手機站
      千鋒教育

      千鋒學習站 | 隨時隨地免費學

      千鋒教育

      掃一掃進入千鋒手機站

      領取全套視頻
      千鋒教育

      關注千鋒學習站小程序
      隨時隨地免費學習課程

      上海
      • 北京
      • 鄭州
      • 武漢
      • 成都
      • 西安
      • 沈陽
      • 廣州
      • 南京
      • 深圳
      • 大連
      • 青島
      • 杭州
      • 重慶
      當前位置:合肥千鋒IT培訓  >  技術干貨  >  PHP中的interface有什么用處?

      PHP中的interface有什么用處?

      來源:千鋒教育
      發布人:xqq
      時間: 2023-10-17 20:41:22

      一、PHP的interface有什么用處

      PHP 中的 Interface 在工程項目中是非常有用的。其最大的用處就在于

      為未來的類切換與拓展保留足夠的兼容性

      這種靈活地兼容性,是一個 PHP項目多年維護后才能體會到的。

      這里我以 Laravel 框架的工程項目舉例說明。

      比如我們有一個數據表,名為 products ,里面存儲了許多商品的信息。

      對于新手來說,要對這個類進行操作,一般的做法就是建立一個 控制器(Controller),將對于該表的 “新改讀刪(CURD)”都放在其中。這是官方教程中的方法

      php

      namespace App\Http\Controller;

      class ProductController extends Controller

      {

      ? public function index(){ };

      ? public function create(Request $request){ };

      ? ….

      }

      ?>

      這樣并不錯,但未來要做修改的時候,每次都要修改這個類,而有的操作其實是反復寫的,無法復用。

      所以在工程項目中,一般都不會按照 官方教程這么寫,這里就需要用 interface 了。

      我們先建立一個針對 Product 的服務操作接口

      php

      namespace App\Repositories\Product;

      interface ProductRepository{

      ?? public function create(array $data);

      ?? public function find($id=null);

      ?? public function delete($id=null);

      ?? ….

      }

      ?>

      這里定義了所需的功能函數,再實現一個對應的類

      php

      namespace App\Repositories\Product;

      use App\Models\Product;

      class ProductEloquent implememts ProductReposity

      {

      ?? public function create(array $data){ };

      ?? public function find($id=null){ };

      ?? public function delete($id=null){ };

      ?? ….

      }

      ?>

      將原有的 Controller 類拆分到兩個文件中,我們就可以完成如下工作:

      以后該項目中所有與 Product 相關的操作,都不再關聯到 ProductEloquent 類,而關聯到 ProductReposity 接口上。

      php

      /** use App\Repositories\ProductEloquent; **/

      use App\Repositories\ProductReposity;

      ?>

      再利用 Laravel 的服務注冊,將接口與實際類關聯起來。這個功能在?AppServiceProviders.php?中增加如下的代碼。

      php

      namespace App\Providers;

      use App\Repositories\ProductRepository;

      use App\Repositories\ProductEloquent;

      use Illuminate\Support\ServiceProvider;

      class AppServiceProvider extends ServiceProvider

      {

      ??? /**

      ???? * Register any application services.

      ???? *

      ???? * @return void

      ???? */

      ??? public function register()

      ??? {

      ??????? $this->app->singleton(ProductRepository::class, ProductEloquent::class);

      ??? }

      ??? /**

      ???? * Bootstrap any application services.

      ???? *

      ???? * @return void

      ???? */

      ??? public function boot()

      ??? {

      ??????? //

      ??? }

      }

      延伸閱讀:

      二、PHP接口(interface)的特點

      1、接口的方法必須是公開的。

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

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

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

      5、接口也可以繼承接口。

      聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。

      猜你喜歡LIKE

      web前端會用到哪些軟件工具?

      2023-10-17

      java/Python這么火,c++這么難,為什么我們還要選擇用C++?

      2023-10-17

      app開發的制作為什么報價和開發周期都不一樣?

      2023-10-17

      最新文章NEW

      對數量龐大的照片進行分類管理,較好的方便檢索的方法是什么?

      2023-10-17

      PHP中的interface有什么用處?

      2023-10-17

      PHP有哪些運行環境?

      2023-10-17

      相關推薦HOT

      更多>>

      快速通道 更多>>

      最新開班信息 更多>>