2013-06-19 50 views
2

我正在使用輕量級PHP MVC(本地生成 - 不是由我 - 但基於Codeigniter)開發Web應用程序。目前,我只有一個對象 - 用戶。在視圖之間傳遞與用戶對象關聯的數據PHP MVC

Web應用程序允許每個用戶策劃一個集合(假設用戶擁有不同動物的集合)並即時操作集合。網站上的一個頁面將定義一組動物的行爲,另一個頁面將指定外觀。但是,如果用戶在定義行爲的同時刪除動物,那麼一旦用戶移至外觀選項卡,該動物應從集合中移除。

可以(應該)每個動物是一個對象嗎?我知道在Java中,我可以將一個對象數組傳遞給我的應用程序中的另一個對象,但不知道這在PHP中是否可行/常見(這將是理想的實現)。

或者,如果我是所有動物的存儲在某種數據結構,可我通過視圖之間的數據結構(從客戶端通過AJAX?)

我不想存儲這個信息在數據庫中,因爲那麼,在每次頁面加載之間,我將不得不重新查詢數據庫以查看是否有任何更改。

+0

您每頁使用多少個視圖?或者你提到的兩個視圖產生兩個不同的界面:一個用於html頁面,另一個用於Ajax響應。這有點令人困惑(特別是,因爲CI假裝視圖只是美化模板)。 –

+0

每頁一個視圖(頁面具有非常不同的功能)和兩個頁面 - 所以兩個視圖。 –

+0

問問自己爲什麼你不想使用數據庫。這是他們的目的!如果查詢是複雜的,查詢mysql所提及的數據類型大約需要1微秒,而如果查詢很簡單,則查詢數量會更少。如果您真的覺得自我鞭策,您可以將數據以CSV,JSON或XML格式存儲並加載到內存中以供每次使用,但應用程序無法很好地擴展。 Mysql將比您或我可能編寫的任何代碼更快地處理數據事務。如果你有兩頁,你不需要Ajax來傳輸數據。每次查看它時,只要讓php寫就可以了。再次,mysqli _ * ... –

回答

0

這的確是可行的,但僅限於某種持久性存儲。 PHP只在請求期間存在。一旦用戶看到完成的「產品」,就不會再運行PHP腳本,因此每一個沒有存儲在HTML或其他地方的信息都會丟失。這就是說你需要某種存儲。

是的數據庫查詢是每次有變化可能是性能打擊。但是你可以做一件簡單易處理的事情。 *) 在用戶可以定義行爲的一個視圖中,您指示用戶提交給他來自的同一個控制器。這個控制器然後從HTML讀取所有相關數據(什麼和如何取決於您的數據如何表示)。這個讀取的數據將被用來更新現有的設置。然後用戶被重定向到外觀控制器並且它是視圖。

*)整個數據結構被序列化並保存在一個文件中。這很容易閱讀,並且易於編寫。 如果您決定使用數據庫,則可以將此文件用作緩存。無論何時發生更改,緩存都會被刪除並更新數據庫。下次控制器需要數據並且沒有找到緩存時,將從數據庫重新創建緩存。除非您更改每個頁面上的數據,否則這會大大提升性能。