2012-11-25 38 views
1

当使用OOP在PHP中我见过很多这样写的功能:function __myfunc(){} 我想知道什么下划线做。我已阅读他们保护功能,但从什么和如何?为什么下划线PHP类功能

又如:

class myClass{ 
    function __myFunc(){ 
     return ' what am i doing?'; 
    } 
} 
$question = new myClass; 
echo $question->__myFunc(); 
+1

请看看这个答案:http://stackoverflow.com/questions/1820973/下划线在PHP功能 – eaykin

回答

3

的下划线没有任何效果。然而,两个下划线用于表示一个神奇功能具有特殊的意义,例如构造函数__construct()或析构函数__destruct()。有些人使用一个或两个下划线来表示一种方法是“私人”的,即只在内部使用。由于此功能在PHP> = 5实现为一个特殊的关键字,你不应该使用这个“强调”了:

class myClass{ 
    private function myFunc() { 
     return ' what am i doing?'; 
    } 
} 

$question = new myClass(); 
echo $question->myFunc(); // fails! 
+0

如果您使用的是像Zend框架的框架,你可能希望保持与框架编码标准和使用下划线为私人和保护方法的命名保持基本代码一致。 –

2

这基本上是一个代码符号,该方法是private和代码的用户不应该用它玩。 (对整体功能至关重要)

您应该只在私人方法上放置下划线符号,这被认为是一种好的做法。

+0

感谢您的答案我应该一定要做下一次我建立一个私人功能。 – sourRaspberri

+0

该手册说:“建议您不要**在PHP中使用函数名和__,除非您需要一些记录的_magic_功能”。所以..据我了解,你应该**不**使用它*私人*功能!? – eyecatchUp

+0

我们正在讨论一个* *底线,但肯定使用* __ *不推荐,因为它会被误解为魔术方法。 –

1

有一些功能被称为magic别人只是将它们标记为私有的符号 - 所以如果某人组成团队,请用下划线来看这个函数,他会认为它是私有的。但实际上你可以在课堂外使用它们。为了保护内部类的方法,你需要使用access modifiers

+0

感谢您的信息。我从来没有在一个团队编码,所以这应该派上用场,如果我这样做。如果我在任何旧功能上看到这一点,我应该认为它有效,我不应该篡改它? – sourRaspberri

+0

这取决于情况。我可以用强调的所有函数编写代码,但可以使用所有函数。但通常,是的,你不需要直接使用它们。通常他们有“公共”方法,这是接口 - 你只需要使用公共功能。 –

相关问题