PHP中的interface有什么用处

首页 / 常见问题 / 低代码开发 / PHP中的interface有什么用处
作者:低代码研发工具 发布时间:02-21 09:33 浏览量:3453
logo
织信企业级低代码开发平台
提供表单、流程、仪表盘、API等功能,非IT用户可通过设计表单来收集数据,设计流程来进行业务协作,使用仪表盘来进行数据分析与展示,IT用户可通过API集成第三方系统平台数据。
免费试用

PHP 中的 Interface 在工程项目中是非常有用的。其最大的用处就在于为未来的类切换与拓展保留足够的兼容性这种灵活地兼容性,是一个 PHP项目多年维护后才能体会到的。

一、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、接口也可以继承接口。

最后建议,企业在引入信息化系统初期,切记要合理有效地运用好工具,这样一来不仅可以让公司业务高效地运行,还能最大程度保证团队目标的达成。同时还能大幅缩短系统开发和部署的时间成本。特别是有特定需求功能需要定制化的企业,可以采用我们公司自研的企业级低代码平台织信Informat。 织信平台基于数据模型优先的设计理念,提供大量标准化的组件,内置AI助手、组件设计器、自动化(图形化编程)、脚本、工作流引擎(BPMN2.0)、自定义API、表单设计器、权限、仪表盘等功能,能帮助企业构建高度复杂核心的数字化系统。如ERP、MES、CRM、PLM、SCM、WMS、项目管理、流程管理等多个应用场景,全面助力企业落地国产化/信息化/数字化转型战略目标。 版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们微信:Informat_5 处理,核实后本网站将在24小时内删除。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系邮箱:hopper@cornerstone365.cn 处理,核实后本网站将在24小时内删除。

最近更新

明道云和织信低代码开发平台:《明道云与织信低代码对比》
02-25 15:12
MyApps、织信低代码开发平台:《MyApps与织信低代码对比》
02-25 15:12
微信低代码平台:《微信低代码平台应用》
02-25 15:12
低代码Dashboard:《低代码Dashboard开发》
02-25 15:12
织信低代码开发平台:《织信低代码平台功能》
02-25 15:12
低代码开发平台Mendix:《Mendix低代码平台解析》
02-25 15:12
流之云低代码开发平台:《流之云低代码平台解析》
02-25 15:12
低代码开发平台微信:《微信低代码平台功能》
02-25 15:12
Appian低代码开发平台:《Appian低代码平台功能》
02-25 15:12

立即开启你的数字化管理

用心为每一位用户提供专业的数字化解决方案及业务咨询

  • 深圳市基石协作科技有限公司
  • 地址:深圳市南山区科技中一路大族激光科技中心909室
  • 座机:400-185-5850
  • 手机:137-1379-6908
  • 邮箱:sales@cornerstone365.cn
  • 微信公众号二维码

© copyright 2019-2024. 织信INFORMAT 深圳市基石协作科技有限公司 版权所有 | 粤ICP备15078182号

前往Gitee仓库
微信公众号二维码
咨询织信数字化顾问获取最新资料
数字化咨询热线
400-185-5850
申请预约演示
立即与行业专家交流