2012-04-04 27 views
2

介紹

我有某種形式的,我可能要訪問數次每個頁面加載值。我可以採取兩種不同的方法來訪問它們,但我不確定哪一個更好。三層已經實施的例子是語言,URI和顯示文本的幾個選項,我在這裏描述:定義的變量和數組VS函數在PHP

語言

現在它被配置成這樣:lang()是返回根據參數的不同值的函數。

例如:lang("full")打印當前語言「英語」,而lang()打印當前語言的縮寫「en」。還有更多的選項,如lang("select"),lang("selectact")等打印不同的東西。代碼太長,並且與案例無關,所以如果有人想要它,只需要它。

地址

的$地址陣列還返回根據請求不同的值。整個數組在頁面的開頭完全定義,用於獲取當前頁面的更短但準確的鏈接。

例如:echo $Url['full']會打印「http://mypage.org/path/to/file.php?page=1」,echo $Url['file']會打印「file.php」。這對於action=""在表單和許多其他事物中很有用。 $Url['folder']$Url['file']等有更多的值。如果想要的話,也可以用相同的代碼來請求它。

文本

[您可以跳過本段]

有被以同樣的方式比$ URL定義的另一個數組稱爲$文本。整個數組在開始時定義,進行一次mysql調用,並用while循環定義當前頁面的所有$Text[$i]。我不確定這是否比單個mysql單元多次調用更有效。例如:echo $Text['54']打印「這只是一個測試陣列!」這可以完美地使用像text(54)這樣的功能來實現。

問題

有了3個例子,你可以看到,我用不同的方法來幾乎做同樣的功能(沒有雙關語意),但我不知道哪一個應該成爲標準之一我的代碼。我可以創建一個名爲url()的函數和其他名爲text()的函數來輸出我想要的內容。我認爲在這些情況下使用函數更好,但我不知道爲什麼。所以我非常感謝你的意見和建議。

我應該按照我描述的方式混合使用數組還是函數,還是應該使用funcions?

請,基地這個答案:

  • 源需要由其他開發商
  • 資源消耗(處理時間和內存)是可讀和可重複使用的
  • 較短代碼越好越好。
  • 越是你解釋的原因越好。

謝謝

PS,現在我知道$ URL和$ URI之間的差異。

回答

2

這聽起來像你通過數組表示法實現模糊函數。通常情況下,這些將是具有方法的類。 $url['full']將是$url->getFullPath()。方法比數組訪問器更受歡迎,因爲方法是有文檔記錄的,並且可以由IDE進行內省。對象更可取,因爲(在你的例子中)你可以延遲加載信息。現在,您的腳本正在編譯$Url數組,並計算出每個可能的鍵的值,以便在腳本中使用它。而$request對象只能根據請求進行解析 - 而不是實例化。

+0

我不完全理解你。 「方法」是什麼意思?魔術方法?另外,如果您聲明我在使用對象,那麼爲什麼要使用「而$ request對象...」來與我的腳本進行對比?不是關於對象的句子嗎?對不起,我的英文不好... – 2012-04-04 23:36:24

+0

我肯定也會把'lang','url'和'text'(儘管我可能會把它和'lang'合併成類)。但我認爲在這種情況下,我會使用靜態類,然後像使用它們:'URL :: getFullPath()'或'Lang :: get(54)'(儘管我從不使用數字鍵進行翻譯)。 – powerbuoy 2012-04-04 23:43:51

+0

以您的示例爲例,您傳遞的變量的每個變體都應該是一個具體的方法。除動態值外。例如:你的'$ url'數組將變成'$ request'對象。你可以調用它的具體方法,比如'$ request-> getFullPath()'..你也可以執行$ request-> getParam('page')'。你不需要神奇的方法來處理你正在做的事情 - 它們總是讓事情變得更加複雜,但卻有其用處。 '$ request'是我引用你的'$ url'數組的對象版本。 – 2012-04-04 23:46:34

0

我正在使用像配置數組var var。在哪裏設置字符串。稍後閱讀使用$LBL["hello"]='Hi!'lbl(5)更好。想想自己什麼時候你會回到你的代碼aftre一年:)

+0

我真的不需要定義很多全局變量(不能說沒有),因爲函數只能在html中打印某些東西。實際上,相同的代碼使用會是:'echo $ Url [「full」];'或'url(「full」)'。在主要問題中編輯。 – 2012-04-04 23:39:49

+0

當你調用一個函數時,你設置的是局部變量。你只定義了許多本地人。相同的內存成本。 – 2012-04-04 23:41:48

+1

提示 - 查看一些開源SW的代碼。它由最好的。 Drupal,Wordpress等 – 2012-04-04 23:45:26