【问题标题】:Cakephp 3.x How to set up with 3rd parties?Cakephp 3.x 如何设置第三方?
【发布时间】:2014-10-29 03:51:39
【问题描述】:

我不知道这是否是最好的标题。如果我错了,请纠正我,伙计们。现在解释我在问什么。

我们有一家公司运送由多个供应商销售的产品。这些供应商都有不同的 POS(销售点)系统。大概有 5 种不同的 POS 系统。这意味着每个 POS 系统的每个数据库表都不同。我们与他们的数据库同步,POS 将数据存储到我们的服务器。所以,我在我们的 cakephp 应用程序中尝试做的是创建一个对象接口,然后创建单独的类(为每个 POS)实现接口以提取数据并集中它。我正在考虑通过将这些类放在 Vendor 目录中然后使用配置告诉它在我的应用程序中使用哪些模型来做到这一点。这是解决方法还是打破 MVC 模式???

编辑:我将更详细地解释我必须处理的内容。目前,我们主要使用的 5 个 POS 系统中有两个。与他们的数据库同步后,我的数据库中现在有以下表。

[POS1] => [
   customers=>[
      'id', 'FIRSTNAME', 'LASTNAME'
   ],
   products=>[
      'id', 'TYPE', 'TITLE', 'PRICE'
   ],
   'orders'=>[
       'id', 'PRODUCT_ID' 
    ],
    'transactions'=>[
       'id', 'ORDER_ID', 'CUSTOMER_ID'
     ]
];
[POS2] => [
   customers=>[
      'id', 'name'
   ],
   products=>[
      'id', 'price'
  ],
  transactions=>[
       'id', 'order_id', 'customer_id'
     ]
];

【问题讨论】:

    标签: php cakephp cakephp-3.0 vendors


    【解决方案1】:

    供应商通常是“第三方的东西”,您想为您的应用构建一些东西,而不是真正使用外部第三方库。所以它会成为你应用的一部分。

    我会将这些新的库放在 App/Lib 或 App/Pos 中,然后实现工厂模式和抽象类,以实现它们共同的通用方法。

    use App/Pos/PosSystem;
    /* ... */
    $Pos = PosSystem::get('SomeName');
    $Pos->save($data);
    $Pos->read('...');
    

    编辑:

    您需要的基本上只是一个数组转换,它将您的 POS 数据转换为一个统一的结构。对于 CakePHP 3.0,我认为有几种方法可以完成这项工作。也许是装饰器(我自己还没有使用过)、自定义实体对象或非常经典的行为。

    我认为您不需要任何超出 CakePHP 3.0 已经提供的自定义类。你只需要转换数据结构。

    【讨论】:

    • 我已经编辑了标题以反映我正在使用的 cakephp 版本。
    • 我还提供了 POS 系统的更多详细信息。
    • 我已经更新了我的答案,这很容易做到,你想要的只是规范化数据结构。
    • 我有多个供应商。有些使用 pos1 结构,有些使用 pos2 结构。我设置了我的数据库,所以每个表都附加了 vendor_id,就像这个 products_6 一样。六是供应商编号 6。我一直在尝试用谷歌搜索它,但我没有找到任何关于如何将蛋糕表的名称动态更改为数据库中表的信息。还是有比我正在做的更好的建议?
    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    相关资源
    最近更新 更多