Why underscore PHP class functions
在PHP中使用oop时,我见过很多这样编写的函数:function __myfunc(){}。我想知道下划线的作用。我读过他们保护功能,但是从什么和如何?
另一个例子:
1 2 3 4 5 6 7
| class myClass{
function __myFunc(){
return ' what am i doing?';
}
}
$question = new myClass;
echo $question->__myFunc(); |
- 请查看以下答案:stackoverflow.com/questions/1820973/php函数中的下划线‌&8203;on
下划线无效。但是,有两个下划线用于表示具有特殊含义的魔力函数,例如构造函数__construct()或析构函数__destruct()。有些人使用一个或两个下划线来表示方法是"私有的",即只在内部使用。由于这个特性是在php>=5中作为一个特殊的关键字实现的,所以您不应该再使用这个"undercoring"了:
1 2 3 4 5 6 7 8
| class myClass{
private function myFunc() {
return ' what am i doing?';
}
}
$question = new myClass();
echo $question->myFunc(); // fails! |
- 如果您使用的是Zend框架之类的框架,那么您可能希望遵守框架编码标准,并使用下划线来命名私有和受保护的方法,以保持代码基的一致性。
这基本上是一个代码表示法,这个方法是private,代码的用户不应该使用它。(对整体功能至关重要)
您应该只在私有方法上放置下划线符号,这被认为是一种良好的实践。
- 谢谢你的回答,下次我构建一个私有函数时,我一定要这样做。
- 手册上说:"建议不要在PHP中使用函数名,除非您需要一些文档化的魔力功能"。所以…据我所知,您不应将其用于私人功能!?
- 我们正在讨论一个下划线,但不建议使用,因为它会被误解为一种神奇的方法。
- 谁说了一个下划线?问题示例代码有两个。问题是"下划线的作用是什么"。编辑:误读了你的答案,这确实是一个下划线。然而,问题是关于__
- 是的,我的意思是二。但现在我知道一个下划线和两个下划线有区别。再次感谢
有一些函数被称为magic,另一些函数只是将它们标记为private的符号-因此,如果您的团队中有人看到这个带有下划线的函数,他会认为它是private。但实际上,您可以在类本身之外使用它们。要保护类内的方法,需要使用访问修饰符
- 谢谢你的信息。我以前从来没有在一个团队中编码过,所以如果我这样做的话,这应该很有用。如果我在任何旧的功能上看到这个,我应该假定它是有效的,我不应该篡改它?
- 这取决于形势。我可以在代码中用下划线标出所有函数,但您可以使用所有函数。但通常,是的,您不需要直接使用它们。通常它们有"public"方法,即接口——您只需要使用公共函数。