关于magic方法:为什么强调php类函数

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();


下划线无效。但是,有两个下划线用于表示具有特殊含义的魔力函数,例如构造函数__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!


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

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


有一些函数被称为magic,另一些函数只是将它们标记为private的符号-因此,如果您的团队中有人看到这个带有下划线的函数,他会认为它是private。但实际上,您可以在类本身之外使用它们。要保护类内的方法,需要使用访问修饰符