我已經繼承了一些我需要對其進行重大更改的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,兩個頁面都可以開始同一會話。 –