2015-07-19 55 views
2

我有一個Guzzle HTTP客戶端(版本6)作爲依賴的對象。當我嘗試使用php serialize()方法對其進行序列化時,它會拋出Serialization of 'Closure' is not allowed異常。我覺得兩個選項:如何序列化依賴於guzzle 6客戶端的對象?

一)使用狂飲的先前版本,而忘記了升級到較新的一個(不是最好的情況下)

二)選擇性序列化對象的屬性,跳過狂飲客戶端(它增加了一些複雜性,但似乎是不錯的選擇)

也許我做這一切都是錯誤的,所以請建議你會做什麼。

UPD:對象是使用Guzzle客戶端從api獲取屬性的模型。

+0

當您序列化客戶端php時,嘗試序列化連接到此客戶端的所有對象。所以沒有辦法執行序列化。可能的解決方案:你可以序列化你的模型,而不需要客戶端。只保存guzzle客戶端的幾個屬性以供將來恢復。關於反序列化 - 創建guzzle客戶端並將其手動連接到模型。 – funivan

回答

1

畢竟,我決定實現一個序列化器,並從我的模型對象中只選擇有用的屬性。事實上,我發現沒有必要保持http客戶端序列化,因爲它沒有與模型相關的重要狀態。然後,在反序列化的時候,可以再次添加guzzle客戶端。對於那些處理同樣問題的人,我建議看看symfony的序列化程序組件文檔,它提供了它應該如何工作的概念:http://symfony.com/doc/current/components/serializer.html

相關問題