从数组/类中计算唯一的id

Pau*_*ema 9 php arrays hash object unique-id

我使用数据类来为我的数据提供模板,我想从数据类中的数据计算一个唯一的id,这样我就可以检查具有该数据的模板是否已经在缓存中,然后提供该版本.

所以从类数组中获取唯一id的函数可以帮助我

像这样的东西工作,但相当昂贵的md5(序列化($ classdata))

我希望有一些功能来获取唯一的ID而不序列化所有数据,或至少不必在PHP中

在此先感谢,最好,保罗

编辑:我很快就庆祝,唯一的id在当前实例中只是相同的,重新启动相同的脚本会产生另一个id,然后当然不是在使用的cache testscript中:

<?php
class foo {}
$f = new foo;
print spl_object_hash($f);
Run Code Online (Sandbox Code Playgroud)

生病了更深入的解释

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();
Run Code Online (Sandbox Code Playgroud)

现在,如果给模板引擎的数据在缓存中,它使用该版本,防止必须重新解析数据集的模板

这是一个简单的template_data视图,它实际上是延迟加载并使用memcached dataid,所以数据实际上并没有被提取,直到它在模板中使用

Jak*_*e N 5

你可以尝试spl_object_hash()

来自文档

此函数返回对象的唯一标识符.该id可以用作用于存储对象或用于识别对象的散列键.