Я использую класс данных для подачи шаблонов своих данных, я хочу вычислить уникальный идентификатор из данных в классе данных, чтобы я мог проверить, все ли шаблоны с этими данными уже находятся в кэше, а затем обработать эту версию.
, поэтому функция для получения уникального идентификатора из массива класса помогла бы мне
что-то вроде этого работает, но довольно дорого md5 (serialize ($ classdata))
я надеюсь, что есть какая-то функция для получения уникального идентификатора без сериализации всех данных, или, по крайней мере, не в php
Заранее спасибо, лучше всего, Пол
редактировать: я отмечал в ближайшее время, уникальный идентификатор в текущем экземпляре остается таким же, перезапуск этого же скрипта создает другой идентификатор, который, конечно, не входит в кэш. Используется тестовый сценарий:
<?php
class foo {}
$f = new foo;
print spl_object_hash($f);
плохо объясню более подробно
class template_data implements IteratorAggregate, ArrayAccess, Countable {
private $_data;
//some methods for the overloaded classes
//
//the getId function
public function getId() {
return hash('md5',serialize($this->_data));
}
}
$t = new template('file');
$d = new template_data('some data');
$t->addData($d);
$t->display();
теперь, если данные, переданные механизму шаблонов, находятся в кэше, он использует эту версию, предотвращая необходимость повторного анализа шаблона для набора данных
, это упрощенное представлениеиз template_data, это на самом деле ленивая загрузка и использует memcached dataid, так что данные фактически не извлекаются, пока не будут использованы в шаблоне