我不知道这是不是最好的头衔。伙计们,如果我错了,请纠正我。现在解释一下我在问什么。
我们有一家公司出货由多家供应商销售的产品。这些供应商都有不同的POS(销售点)系统。可能有大约5种不同的POS系统。这意味着每个POS系统的每个数据库表都不同。我们与他们的数据库同步,其中POS将数据存储到我们的服务器。因此,我在cakephp应用程序中尝试做的是创建一个Object Interface,然后创建单独的类(对于每个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'
]
];
答案 0 :(得分:1)
供应商通常是"第三方的东西",你想为你的应用程序构建一些不真正使用外部第三方库的东西。所以它将成为你应用程序的一部分。
我会把这些新的lib放在App / Lib或App / Pos中,然后实现一个工厂模式和抽象类,实现他们都有的通用方法。
use App/Pos/PosSystem;
/* ... */
$Pos = PosSystem::get('SomeName');
$Pos->save($data);
$Pos->read('...');
修改强>
您所需要的只是一个阵列转换,它将把您的POS数据转换为统一的结构。使用CakePHP 3.0,我认为有几种方法可以完成这项工作。也许是装饰者(我自己还没有使用它们),自定义实体对象或非常经典的行为。
我认为你不需要任何自定义类,这是在CakePHP 3.0已经提供的范围之外。您只需要转换数据结构。