重要な変更を加える必要のあるPHPコードをいくつか継承しました。PHPを使用すると、オブジェクトをシリアル化し、シリアル化されたテキストをフォームデータとしてページ間で渡すことができることを知っています。私が継承したコードでは、彼らはまさにそれを行っていますが、これはいくつかの保守性の問題を引き起こしています。このアプローチを取るのは良い考えでさえあるのだろうかと思います。
例えば ...
ユーザーがPageA.phpを開くと、以下が作成されます。
$expensiveObj = new ExpensiveClass($id);
次に$expensiveObj
、がシリアル化され、結果のテキストが次のようにdivに格納されます。
<div id="expensiveObj"><?php echo strtr(base64_encode(serialize($expensiveObj)), '+/=', '-_,');?></div>
PageA.phpがロードされると、 PageB.phpに対してajax呼び出しが行われます。divの内容は、post変数としてPageB.phpに渡されます。PageB.php内で、次のコードがオブジェクトのシリアル化を解除します。
$expensiveObj = unserialize(base64_decode(strtr($_POST['expensiveObj'], '-_,', '+/=')));
のフィールドとメソッド$expensiveObj
にPHPがアクセスできるようになりました。私が直面している問題は
はPageB.phpでクラスのインスタンスとして
$expensiveObj
識別されていないため、IDEはのフィールドと関数が使用可能であることを認識しません。オートコンプリートを実行したり、IDE内で使用可能な関数を検索したりすることはできません。さらに、IDEは潜在的な問題をキャッチできません。他の開発者はVIで独占的に働いていたので、彼は決して気にしませんでした。ExpensiveClass
ExpensiveClass
PageB.phpはリファクタリングする必要があります。このページ内でビュー、ビジネス、およびコントローラーロジックがすべて発生しているため、いくつかのクラスを作成したいのですが、クラスに渡す方法がわからないという問題が発生しています
$expensiveObj
。
私の質問は、オブジェクトをクラスに渡す方法はありますか?そして、渡されたpost変数が実際にのインスタンスであることをIDEに通知する方法はありますExpensiveClass
か?
最後に、この方法でオブジェクトを渡すことも良い考えですか、それともより大きなリファクターを検討する必要がありますか?