2014-09-04 3 views
1

Я не знаю, если это лучший титул. Поправьте меня, если я ошибаюсь, ребята. Теперь объясните, о чем я прошу.Cakephp 3.x Как настроить сторонние стороны?

У нас есть компания, которая выпускает продукты, которые продаются несколькими поставщиками. Все эти поставщики имеют разные системы POS (Point of Sale). Есть, вероятно, около 5 различных POS-систем. Это означает, что каждая из таблиц базы данных различна для каждой системы POS. Мы синхронизируем с их базой данных, где POS хранит данные на нашем сервере. Итак, что я пытаюсь сделать в нашем приложении cakephp, это создать интерфейс объекта, а затем создать отдельные классы (для каждой POS), которые реализуют интерфейс, чтобы вытащить данные и централизовать их. Я думал об этом, разместив эти классы в каталоге Vendor, а затем используя конфигурацию, чтобы сообщить, какие модели использовать в моем приложении. Является ли это способом обойти это или это нарушает шаблон MVC ???

EDIT: Я расскажу подробнее о том, с чем мне нужно работать. Сейчас есть две из пяти 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' 
    ] 
]; 

ответ

1

Поставщик, как правило, «сторонний материал», вы хотите создать что-то для своего приложения, не используя внешние сторонние библиотеки. Так что это станет частью вашего приложения.

Я бы поставил эти новые библиотеки в App/Lib или App/Pos, а затем реализовал фабричный шаблон и абстрактный класс, который реализует общие методы, которые у всех они будут иметь.

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

Edit:

Что вам нужно в основном только преобразование массива, который превратит ваши данные POS в единую структуру. С CakePHP 3.0 я думаю, что есть несколько способов сделать это. Возможно, декоратор (еще не использовал их самостоятельно), пользовательский объект объекта или довольно классическое поведение.

Я не думаю, что вам нужны какие-либо пользовательские классы, которые находятся за пределами того, что уже предлагает CakePHP 3.0. Вам просто нужно преобразовать структуру данных.

+0

Я отредактировал заголовок, чтобы отразить версию cakephp, с которой я работаю. – chrisShick

+0

Я также предоставил более подробную информацию о POS-системах. – chrisShick

+0

Я обновил свой ответ, это довольно легко сделать, все, что вы хотите, это нормализация структуры данных. – burzum

Смежные вопросы