我继承了一些我需要进行重大更改的PHP代码。我知道使用PHP可以序列化一个Object,并将页面之间的序列化文本作为FormData传递。在我继承的代码中,他们已经做到了,但这会产生一些可维护性问题。我想知道采用这种方法是否是一个好主意。
例如......
当用户打开 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'], '-_,', '+/=')));
PHP现在可以访问$expensiveObj
的字段和方法。我遇到的问题是
由于 PageB.php 中未将$expensiveObj
标识为类ExpensiveClass
的实例,因此IDE不知道字段和函数ExpensiveClass
的{{1}}可用。我不能做自动完成,也不能在IDE中查找可用的功能。此外,IDE无法捕捉潜在问题。另一位开发人员专门在VI工作,所以他从不关心。
PageB.php 需要重新考虑。在这个页面中都有视图,业务和控制器逻辑,我宁愿创建几个类,但是我遇到了一个问题,我不知道如何将$expensiveObj
传递给一个类。
我的问题是,有没有办法将Object传递给一个类?有没有办法通知IDE传入的post变量确实是ExpensiveClass
的实例?
最后,通过这种方式传递物体是一个好主意,还是应该考虑更大的重复因素?