Принципы организации асинхронного обмена в x3m
Концепция асинхронного вызова в x3m построена на принципе коннекторов, принцип прост - у каждого модуля свой коннектор, которые позволяет асинхронно вызывать любой метод фронт-класcа модуля.
Например для модуля интернет-магазин:
var ishop= new fConnector('ishop'); // - инициализируем объект коннектор
так как каждый модуль имеет фронт-класс, например ishop.front.class.php, у каждого из модулей возможно существование .xfront класса в котором описаны методы доступные из коннектора, в свою очередь
конектор имеет доступ и к методам front класса, так как .xfront модуль является потомком front.
Поясним на примере модуля интернет-магазина ishop:
- //основной модуль ishop
- PHP
- class ishop_module_front extends ishop_module_tpl
- {
- ...
- //фукция для добавления товара в корзину
- function _add($id, $count = 1, $rq_hash = null, $ishop_ext_data = array(), $prevent_rq_hash = null)
- {
- ...
- }
- ...
- }
- //xfront часть модуля ishop
- class ishop_module_xfront extends ishop_module_front
- {
- ...
- //описываем функцию для добавления в корзину - название функции произвольно
- //$params -ассоциативный массив параметров
- function add_to_cart($params)
- {
- $this->_add($params['id'],$params['count']); //вызываем метод родительского класса, отвечающий за добавление товара в корзину
- }
- ...
- }
- Javascript
- var ishop= new fConnector('ishop'); // - инициализируем объект коннектор
- //вызов данной функции позволит асинхронно отправить товар в корзину
- function add_good_to_cart(good_id,good_count)
- {
- ishop.execute({add_to_cart:{id:good_id,count:good_count}}); //вызываем метод add_to_cart с массивом параметров id,count;
- }