2013-03-27 52 views
1

我只是想知道,如果有別的(如安全問題等),爲什麼我們應該避免這個代碼讓類變量php,爲什麼我們不應該使用get('var');

getVar('var'); 

,而不是比我們的代碼的清晰度等:

getId(); getName(); etc. etc. 

+12

你在說什麼? – hsz 2013-03-27 14:56:27

+0

那麼,如果你的getter/setter實際上需要做其他事情,你會在哪裏放置代碼?有一個時間和地點的魔術方法。 – ficuscr 2013-03-27 14:57:14

+0

@hsz說,你必須提供更多的信息,你使用哪個庫提供'getVar'?如果它是一個類也許使用getter的最大理由是支持封裝 – dm03514 2013-03-27 14:57:59

回答

3

我想一個原因是,您的IDE可以通過自動完成並鍵入方法名稱來幫助您。

如果按照第一個示例使用通用get方法,IDE將無法爲您提供任何幫助。另外,如果它是一個公共API(即除了你自己以外的開發人員將要使用它),它確實會幫助他們擁有一個固定的界面來處理,而不是一個單獨的get方法,它不會告訴他們它有什麼可能的選擇。

由於我們在此專門討論PHP,所以值得指出的是,您所描述的功能與PHP內置的__get()方法非常相似。此方法的工作方式與您所描述的getVar()相似,但將變量公開爲屬性。

這也與IDE類型提示有類似的問題,但如果您使用體面的IDE,可以通過使用文檔註釋告訴IDE支持哪些屬性來解決這個問題。一個getVar()方法不會有這個選項。

+0

到目前爲止3票爲一個好的答案和10個有用的遠非一個'什麼?'評論?爲您的閱讀理解和良好的答案榮譽! – ficuscr 2013-03-27 15:12:55

相關問題