/** * Класс для создания экземпляра источника данных. * * @param string $mident - идентификатор маппинга. Должен совпадать для источника и цели. * @param array $params - параметры. Используются для уточнения, что необходимо загрузить (например идентификатор фолдинга). * @return MappingSource */ public static final function inst($mident, array $params = array()) { //Получим название класса-имплементации $class = get_called_class(); //Отсортируем параметры ksort_deep($params); //Получим hash загрузчика данных $hash = simple_hash(array('class' => $class, 'params' => $params, 'mident' => $mident)); if (!array_key_exists($hash, self::$items)) { self::$items[$hash] = new $class($class, $params, $mident, $hash); } return self::$items[$hash]; }
function simple_hash($data) { $data = to_array($data); ksort_deep($data); return md5(serialize($data)); }