调用私有静态方法的好方法?

时间:2013-09-20 09:09:49

标签: php oop

这个问题看似愚蠢,但两者($ this和self)都可以调用静态方法。

但是,正确的方法是什么?

我个人倾向于使用“self”,因为私有静态方法就像一个不使用任何对象状态的实用函数。

$data = self::calcSoldeNextMonths('sl', $data, $toSub);
$data = $this->calcSoldeNextMonths('sl', $data, $toSub);

3 个答案:

答案 0 :(得分:3)

我个人更喜欢self::,因为它会立即告诉我我正在处理静态方法。挖掘代码肯定不会很有趣,我必须不断查找函数声明,以确定此方法的操作方式。

修改 请在第一条评论中查看@ Kakawait的链接:When to use self vs this。使用self(即范围解析)查看第二个最受欢迎的影响答案。

答案 1 :(得分:1)

只能使用 static :: self ::

调用静态方法

self :: 表示该类, this-> 表示当前对象。根据定义,静态方法是对象独立的类方法,我更喜欢使用 self ::

答案 2 :(得分:0)

这里有一个简单的示例,可以区分selfstatic以及简单的方法来记住不同的黑/白

self返回基础对象的基础实例(调用self)

static返回对象的当前实例(对象被扩展)。

class BaseClass {

public function make()
{
    echo __METHOD__, "\n";
}

public function println()
{
    static::make();
}
}

class BaseClass2{

public function make()
{
    echo __METHOD__, "\n";
}

public function println()
{
    self::make();
}
}

class StaticClass extends BaseClass{

public function make()
{
    echo __METHOD__;
}
}

 class selfMain extends BaseClass2{
public function make()
{
    echo __METHOD__;
}
 }
$obj = new StaticClass();
$obj->println();//return the current instance of object

$obj = new selfMain();
$obj->println();//return the best instance of object