Opis Closure是一個函式庫,旨在透過提供一個使所有閉包可序列化的包裝器來克服 PHP 在閉包序列化方面的限制。
該庫的主要特點:
序列化任何閉包
序列化任意物件
不使用eval
進行閉包序列化或反序列化
適用於任何支援閉包的 PHP 版本
支持 PHP 7 語法
處理use()
中引用/導入的所有變量,並自動包裝所有引用/導入的閉包以進行正確的序列化
處理遞歸閉包
處理魔法常數,如__FILE__
、 __DIR__
、 __LINE__
、 __NAMESPACE__
、 __CLASS__
、 __TRAIT__
、 __METHOD__
和__FUNCTION__
。
自動解析閉包內使用的所有類別名稱、函數名稱和常數名
使用#trackme
指令追蹤閉包的駐留源
簡單且非常快速的解析器
執行非序列化閉包時可能發生的任何錯誤或異常都可以被捕獲並正確處理
您可以無限次地序列化/反序列化任何閉包,甚至是那些之前反序列化過的閉包(這是可能的,因為eval()
不用於反序列化)
處理靜態閉包
支援加密簽章閉包
提供一個反射器,可以為您提供有關序列化閉包的信息
為SuperClosure庫提供分析器
自動偵測閉包的作用域和/或綁定物件何時需要序列化,以便閉包在反序列化後正常運作
該庫的完整文件可以在這裡找到。
Opis Closure根據 MIT 許可證 (MIT) 獲得許可。
PHP ^5.4 || ^7.0 || ^8.0
Opis Closure在 Packagist 上可用,並且可以使用 Composer 從命令列介面安裝。
作曲家需要意見/關閉
或者您可以直接將其作為依賴項引用到您的composer.json
檔案中
{“要求”:{“opis/closure”:“^3.5”} }
如果您的專案需要支援 PHP 5.3,您可以繼續使用2.x
版本的Opis Closure 。否則,假設您沒有使用已刪除/重構的類別或功能之一(請參閱更改日誌),則遷移到版本3.x
只需更新您的composer.json
檔案即可。
Opis Closure遵循語意版本控制規範。
我們新增此功能是為了能夠支援閉包綁定物件的序列化。要實現遠非完美,要讓它完美無瑕地工作確實很困難。我們會盡力改進這一點,但我們不能保證任何事情。因此,我們關於OpisClosureserialize|unserialize
函數的建議是謹慎使用它們。