The good way to call a private static method?
本问题已经有最佳答案,请猛点这里访问。
这个问题可能看起来很愚蠢,但是($this和self)都可以调用静态方法。
但是,正确的方法是什么?
我个人倾向于使用"self",因为私有静态方法就像一个不使用任何对象状态的实用函数。
1 2 | $data = self::calcSoldeNextMonths('sl', $data, $toSub); $data = $this->calcSoldeNextMonths('sl', $data, $toSub); |
我个人更喜欢
编辑请参见@kakawait的第一条评论链接:何时使用self与this。使用
只能使用static::或self:调用静态方法:
self::表示类,this->表示当前对象。根据定义,静态方法是独立于对象的类方法,我更喜欢使用self::
这里有一个简单的例子来区分
self返回基对象的基实例(在其中调用self)
static返回对象的当前实例(扩展了任一对象)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | class BaseClass { public function make() { echo __METHOD__," "; } public function println() { static::make(); } } class BaseClass2{ public function make() { echo __METHOD__," "; } 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 |