2012-01-26 129 views
1

對於PHP而言,我確實缺乏經驗,並希望有人能夠爲我闡明一些有關PHP變量處理方式的知識。PHP相同的變量名稱

我有一個PHP Web應用程序,我創建並做出快速的重複需要,所以我簡單地複製並粘貼此應用到同一臺服務器上一個新的文件夾。

我想知道是否有任何問題,如果應用程序,在2個不同的文件夾中,有相同的變量名?

我在想一個意外覆蓋的情況。如果「不」,那麼有人可以向我解釋爲什麼沒有問題?

+0

這些變量是否會在任何時候遇到,比如說包含或需要的其他變量? – Joseph

+0

我不在兩個文件夾之間傳遞變量。 基本上發生了什麼是用戶輸入相同的數據,但前端設計是不同的每個應用程序。它在後端連接的系統也不同。 出於所有目的,它們是獨立的應用程序,只是具有相同的代碼。我正在計劃重新編寫一份文件,以使其更加簡化和易於維護。 展望未來,我想這樣做: 值1 - >應用1 - >統一引擎 - >後端系統1 值1 - >應用2 - >統一引擎 - >後端系統2 統一引擎的存在能夠跟蹤和分開請求 – user1170528

+0

絕不會在您的系統中發生碰撞,衝突或崩潰,除非您的指令是.. – B4NZ41

回答

3

沒有,也不會有應用程序的全局變量之間的任何衝突,只要這兩個應用程序目錄是真正獨立的,不需要彼此包含文件。當一個PHP腳本運行時,啓動它的HTTP請求可以被認爲是一個孤立的事件。它與其他所有對同一應用程序(甚至是同時)以及來自其他應用程序的請求分開並隔離。

每個劇本都有自己的命名空間的變量開始執行時,腳本完成時環境被終止並從內存中刪除。

現在,如果你碰巧使用$_SESSION和應用程序都使用相同的值session_name()和相同的域名運行,有一個值$_SESSION可以堅持你的應用程序實例之間發生碰撞的可能性。這簡直是​​通過改​​變值從默認PHPSESSID的一個應用程序解決:

// Application 1 
session_name("APP1"); 
session_start(); 

// Application 2 
session_name("APP2"); 
session_start(); 

你可能已經意識到這一點,但我會說這是完整的。在可能的情況下,建議抽象出兩個應用程序實例之間可共享的代碼,並將它們包含在內。這與DRY principle保持一致,並且如果您必須對代碼中的兩個應用程序共享進行修改,將爲您節省很多麻煩。

+0

謝謝Michael!這正是我想確認或不確認的內容! 我打算重寫只是沒有/沒有時間了! – user1170528

0

在我opnion你可能會或可能不會使用在不同的文件夾indenticle變量的名稱。這取決於你的應用程序的功能。你需要做一些關於谷歌在php中全局和局部變量的研究。簡而言之,你可以將應用程序複製到新文件夾中,只需要更新/重置路徑(例如包含文件路徑)和數據庫連接strnigs(如果你的應用程序使用數據庫來存儲數據)。