異常:不允許「閉包」序列化
嘗試在測試方法中使用閉包時,出現「異常:'閉包'序列化”可能會出現“Closure' is not allowed”錯誤。
問題
下面的程式碼片段使用閉包來指定儲存電子郵件的自訂檔案路徑:
<code class="php">protected function _initMailer() { ... elseif ('testing' === APPLICATION_ENV) { // ... $callback = function() { return 'ZendMail_' . microtime(true) .'.tmp'; }; // ... }</code>
解決方案
解1:用正規函數取代閉包
用正規函數取代閉包:
<code class="php">protected function _initMailer() { ... elseif ('testing' === APPLICATION_ENV) { // ... function emailCallback() { return 'ZendMail_' . microtime(true) . '.tmp'; } $callback = "emailCallback"; // ... }</code>
用正規函數取代閉包:
解2:使用陣列變數間接呼叫方法<code class="php">protected function _initMailer() { ... elseif ('testing' === APPLICATION_ENV) { // ... $callback = array($this, "aMethodInYourClass"); // ... }</code>利用陣列變數間接呼叫方法這允許您在類別中定義方法並使用陣列將其傳遞給回調。
以上是如何在測試方法中使用閉包解決「異常:不允許序列化『閉包』」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!