2015-05-20 44 views
1

我搜索了一下,才發現我需要更多的信息。我有一個交互式網站使用Ajax調用從服務器獲取信息。 (經過身份驗證的)用戶將會點擊相當多的操作來處理這些數據,並且會連續上傳到服務器。我不確定的事情是如何以最好的方式做到這一點,以便我的項目在未來可以擴展。太多短的PHP文件

舉個例子。用戶登錄並且列表視圖充滿來自服務器的數據。如果用戶雙擊列表視圖中的其中一個元素,他可以更改名稱,並且應該立即將更改上載到服務器。我現在所做的是創建一個名爲「changeName.php」的文件,該文件被調用。如果用戶點擊其他東西,假設有十個不同的按鈕,每個按鈕都會更改特定的設置。我將如何去上傳所有這些不同的數據更改,而不需要有十個不同的php文件都在那裏做自己的小東西?我希望我解釋得很好,但如果有什麼困惑,我會盡力澄清。

+0

它是太多的文件,或者是,文件只是沒有組織起來,他們可以很容易地找到。 –

+1

不幸的是,沒有簡單的方法來做你想做的事情。我建議你看一下PHP路由器,因爲這可以讓你響應不同類型的請求。 示例就是你有一個User.php文件,它響應POST,GET和PUT請求。 POST可能會創建一個新用戶,其中GET可以對用戶進行身份驗證,並且PUT可能允許您更改用戶名。 我建議你看看PHP路由器。 –

+0

不,不會有那麼多的文件,因爲它現在是一個相對較小的項目,但我試圖找出是否是正確的方法。如果我的網頁與服務器有很多這樣的「小型交易」(例如,每個用戶每分鐘20個),那麼爲這些小功能分配一個php文件是否正常? – Pelle

回答

0

您可以將請求傳遞給處理多個操作的單個php文件,而不是將更改發佈到一個PHP文件。在POST數據本身中包含請求的類型。然後,例如,該文件可以使用該鍵上的switch語句來確定要執行的操作,然後調用文件中的特定函數來處理數據。

if (isset($_POST['_action'])) { 
    switch ($_POST['_action']) { 
    'delete': 
     deleteRow(); 
     break; 
    'update': 
     updateRow(); 
     break; 
    'default': 
     foo(); 
    } 
} 
// Functions omitted 

注意,正如其他人所說,使用適當的MVC框架將使這更容易爲你,將有其他好處(安全性,可擴展性等)。特別是,您可以有一個框架來爲您處理路由請求。

在一個不想依賴框架的小型或原型項目中,使用像上面的switch語句這樣的方法至少可以讓您開始。

+0

我其實考慮過這樣做。對我而言,這可能是一個非常好的解決方案。我認爲一個框架可能有點矯枉過正,至少在現階段。感謝代碼示例! – Pelle

+0

不客氣 - 這對於至少在同一文件中進行相關操作非常有用 – highvolt

0

保持這種組織的最好方法是使用合適的框架。 Laravel是一個很好的選擇,它有助於保持代碼的良好組織性和可維護性。

+0

我對web開發很陌生,所以我還沒有看看PHP框架。 Laravel看起來非常令人興奮,我會考慮在稍後階段使用它,因爲在這一點上它有點矯枉過正。謝謝你的提示! – Pelle

+1

@ user2727241它可能會更好地開始一個框架,因爲它會教你mvc。 – Cthulhu

+0

我習慣了從C++編碼的mvc,它是構建軟件的好方法。我會仔細看看這個框架。 – Pelle