這是必然要求設計問題,但我想在PHP中序列化或哈希封閉,這樣我有一個唯一的標識符爲該封閉。在PHP中序列化或哈希封閉
我不需要能夠從中調用閉包,我只需要一個唯一的標識符,它可以從閉包本身的內部和外部訪問,也就是說,接受閉包的方法需要生成對於關閉的ID,並關閉本身就需要能夠產生相同的ID
事情我試過到目前爲止:
$someClass = new SomeClass();
$closure1 = $someClass->closure();
print $closure1();
// Outputs: I am a closure: {closure}
print $someClass->closure();
// Outputs: Catchable fatal error: Object of class Closure could not be converted to string
print serialize($closure1);
// Outputs: Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'Closure' is not allowed'
class SomeClass
{
function closure()
{
return function() { return 'I am a closure: ' . __FUNCTION__; };
}
}
反射API似乎並沒有提供任何我也許可以用來創建一個ID。
好吧,考慮你的設計質疑;)「閉合」是一個匿名函數在這裏? – dualed
是一個閉包是一個匿名函數......我仍然想要一個方法來做一個散列雖然;) – Toby
其中範圍是這個散列是唯一的? – dualed