PHP的interface有什么用处

首页 / 常见问题 / 低代码开发 / PHP的interface有什么用处
作者:低代码研发工具 发布时间:02-21 09:33 浏览量:3026
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 Laravel 项目多年运行中是非常有效的。

延伸阅读:

二、data是什么

data 用来保存实际变量的地址。

data 中的内容会根据实际情况变化,因为 golang 在函数传参和赋值时是 值传递 的,所以:

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

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

最近更新

企业管理用工具有哪些
05-27 10:08
制造企业管理公司有哪些
05-27 10:08
枣庄企业管理厂家有哪些
05-27 10:08
企业管理无能表现有哪些
05-27 10:08
企业管理坚持例子有哪些
05-27 10:08
国际企业管理政策有哪些
05-27 10:08
企业管理调度制度有哪些
05-27 10:08
毁麦涉及哪些企业管理
05-27 10:08
企业管理要建立哪些体系
05-27 10:08

立即开启你的数字化管理

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

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

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

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