2011-07-29 5 views
1

現在の雇用主のプロダクションサーバはまだPHP 4.xを実行しています。いくつかの理由から、PHPのバージョンをアップグレードすることは問題にはなりません。PHP 4.xでPHPクラスのマジックメソッドをエミュレートする

私は、OOPの使用に大きく依存するWebアプリケーションを実装しています。私は、小さなハックや巧妙な回避策(一般に、他のすべてのクラスを拡張するテンプレートの基本クラスにあります)を通して、PHP 5 OOPの機能を十分にエミュレートできることを発見しました。現在、私はクラスのために__sleep()__wakeup()の魔法を必要としています。 PHP 4.x でこの機能をエミュレートする方法はありますか?を呼び出して、serialize()unserialize()をメソッド呼び出しでラップしますか?

答えて

0

を呼び出します名前を変更して、内蔵のserialize()unserialize()の機能をrename_function()override_function()を使って上書きすることで、これを実現できます。しかし、それは間違いなくハックのビットです。

編集:おっと、私はそれらがデバッガメソッドであることに気付きました。これはおそらくあなたのためには機能しません。 Runkitは同じ機能を提供しますが、インストールする必要がある拡張機能であり、PHPをアップグレードできない場合でもその機能を実行することはできません。

編集2:いずれの場合もは、明快さと保守性のために、私が利用可能な場合、特別な関数を呼び出して、あなたがターゲットオブジェクトをイントロスペクトここだけの独自のシリアライズとデシリアライズ機能を定義する方がいいでしょう、と思いますserialize()に電話してください。

0

私は方法があるとは思わない:これらのメソッドは、PHP 5では、PHPエンジン自体によって呼び出されます。あなたがシリアライズ/デシリアライズプロセスを変更したい場合は、あなたには、いくつかの追加のコードでserialize()unserialize()にあなたの呼び出しをラップする必要があります

あなたが推測として、あなたはそれらの非魔法-もはや-方法