Comments 5
Не очень понятна задача — регулярно парсить неизвестные XML?
А вот самое, по-моему, интересное в коде не описали. У вас там система хуков вроде как наличествует. Зачем и почему такая схема?
А вот самое, по-моему, интересное в коде не описали. У вас там система хуков вроде как наличествует. Зачем и почему такая схема?
0
Нет, если конкретно, то (не в целях рекламы) есть сервис 77reports.com
Основная функция сервиса — удобное представление данных из highrise, их графическое и табличное представление.
Делать в реальном времени кучу вызовов АПИ чтобы нарисовать график не очень удобно. Удобнее это делать когда все находится в теплой ламповой базе.
Стали думать как это сделать, в итоге и получилась эта библиотека. Пользователь предоставляет нам свой api-ключ для highrise, а мы в свою очередь раз в сутки подключаемся и забираем данные пользователя с сервиса, попутно удобно располагая их в БД. Таким образом единожды синхронизировав пользователя с highrise мы можем сделать кучу отчетов на этой основе больше его не дергая.
По поводу отчетов вообще тема отдельная.
Шаблоны отчетов находятся в XML файлах, где мы можем описать расположение графиков в отчете, элементы отчета, sql-запросы для каждого графика. Все очень динамично. Фактически, по запросу пользователя мы можем создать для него абсолютно уникальный шаблон отчета под его потребности в течении 1-2 часов.
Касательно хуков — хуки нужны для подготовки и изменения данных. Интерфейс хуков тут
К примеру в нашем сервисе мы используем их для добавления новых полей к таблице (в функции beforeTableCreation добавляем новые поля в структуру fields), для добавления данных в эти поля (beforeDataAdding) и для подготовки структуры БД (в функции beforeSyncing).
Хуки подключаются по названию сервиса.
К примеру для highrise это будет: sync_hook_highrise.php
Пример содержания хука:
Вот как-то так.
Основная функция сервиса — удобное представление данных из highrise, их графическое и табличное представление.
Делать в реальном времени кучу вызовов АПИ чтобы нарисовать график не очень удобно. Удобнее это делать когда все находится в теплой ламповой базе.
Стали думать как это сделать, в итоге и получилась эта библиотека. Пользователь предоставляет нам свой api-ключ для highrise, а мы в свою очередь раз в сутки подключаемся и забираем данные пользователя с сервиса, попутно удобно располагая их в БД. Таким образом единожды синхронизировав пользователя с highrise мы можем сделать кучу отчетов на этой основе больше его не дергая.
По поводу отчетов вообще тема отдельная.
Шаблоны отчетов находятся в XML файлах, где мы можем описать расположение графиков в отчете, элементы отчета, sql-запросы для каждого графика. Все очень динамично. Фактически, по запросу пользователя мы можем создать для него абсолютно уникальный шаблон отчета под его потребности в течении 1-2 часов.
Касательно хуков — хуки нужны для подготовки и изменения данных. Интерфейс хуков тут
К примеру в нашем сервисе мы используем их для добавления новых полей к таблице (в функции beforeTableCreation добавляем новые поля в структуру fields), для добавления данных в эти поля (beforeDataAdding) и для подготовки структуры БД (в функции beforeSyncing).
Хуки подключаются по названию сервиса.
К примеру для highrise это будет: sync_hook_highrise.php
Пример содержания хука:
<?php
require_once dirname(__FILE__) . '/sync_hook.php';
class SyncHook_Highrise extends SyncHook
{
/**
* @param string $tableName
* @param array $fields, each item is of format: fieldName => array('value' => 'field value', 'type' => 'field type')
*/
public function beforeTableCreation($tableName, &$fields)
{
if ($tableName == 'deal')
{
$fields['closing-date'] = array(
'value' => '0000-00-00 00:00:00',
'type' => 'datetime'
);
$fields['stage-percent'] = array(
'value' => '',
'type' => 'string'
);
}
else if($tableName == 'party')
{
if( !isset($fields['name']) )
{
$fields['name'] = array(
'value' => '',
'type' => 'string'
);
}
}
}
}
Вот как-то так.
+1
Плюс за старания.
Не хватает:
— тестов;
— composer.json;
— PSR.
Не хватает:
— тестов;
— composer.json;
— PSR.
+1
Sign up to leave a comment.
Создание базы данных на основе API 37signals