我已经继承了一些我需要对其进行重大更改的PHP代码。我知道用PHP可以序列化一个对象,并将页面之间的序列化文本作为FormData传递。在我继承的代码中,他们已经做到了,但是这造成了一些可维护性问题。我想知道如果采取这种方法甚至是一个好主意。在PHP页面,IDE和将对象传递给其他类时传递对象
例如...
当用户打开PageA.php创建以下:
$expensiveObj = new ExpensiveClass($id);
的$expensiveObj
被串行化,并将所得文本存储在与所述一个div以下:
<div id="expensiveObj"><?php echo strtr(base64_encode(serialize($expensiveObj)), '+/=', '-_,');?></div>
当PageA.php负载,ajax调用是PageB.php。 div的内容作为后期变量传递到PageB.php。在PageB.php下面的代码unserializes对象:
$expensiveObj = unserialize(base64_decode(strtr($_POST['expensiveObj'], '-_,', '+/=')));
的字段和$expensiveObj
的方法现在是到PHP访问。我现在遇到的问题是
因为
$expensiveObj
不确定PageB.php作为类ExpensiveClass
的一个实例,则IDE不知道的ExpensiveClass
领域和功能都可用。我无法进行自动完成,也无法在IDE中查找可用的功能。另外IDE不能捕捉潜在的问题。另一个开发者专门在VI中工作,所以他从不关心。PageB.php需要重新考虑因素。有一些视图,商业和控制器逻辑都发生在这个页面中,我宁愿创建几个类,但是我遇到了一个问题,我不知道如何将
$expensiveObj
传递给一个类。
我的问题是,有没有办法将对象传递给类?有没有办法通知IDE,通过post变量确实是ExpensiveClass
的实例?
最后,以这种方式绕过物体甚至是一个好主意,还是应该考虑更大的重新因子?
[Sessions](http://us3.php.net/manual/en/book.session.php)。就这些。 – Sammitch
@Sammitch我不确定使用会话会解决我列出的问题。这只是以更持久的方式传递数据/对象的另一种方式。但是,如果您想将您的评论扩展为答案,我肯定会考虑您要说的话。如果可能, – Bill
会话+1,两个页面都可以开始同一会话。 –