2013-03-27 51 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

相关问题