ホームページ >バックエンド開発 >PHPチュートリアル >Zend Mail Transport のクロージャによるシリアル化例外を解決するにはどうすればよいですか?
クロージャによるシリアル化例外
問題:
_initMailer メソッドでクロージャを使用する場合、テストは次の例外を除いて失敗します:「'Closure' のシリアル化は許可されていません。」
原因:
匿名関数はシリアル化できません。提供されたコードでは、クロージャが Zend_Mail_Transport_File トランスポートのコールバック パラメータとして使用されます。
解決策 1: クロージャを通常の関数に置き換えます
クロージャを次の関数に置き換えます_initMailer メソッドの外部で定義された通常の関数。例:
<code class="php">function emailCallback() { return 'ZendMail_' . microtime(true) . '.tmp'; } $callback = "emailCallback";</code>
解決策 2: 配列変数による間接メソッド呼び出しを使用する
または、配列変数を使用してクラス内のメソッドを間接的に呼び出すこともできます。コールバックとして。詳細については、Zend Mail のドキュメントを参照してください:
<code class="php">$callback = array($this, "aMethodInYourClass");</code>
以上がZend Mail Transport のクロージャによるシリアル化例外を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。