我正在转换PHP 5.3库以在PHP 5.2上工作.支持我的主要方法是使用后期静态绑定return new static($options);
,如果我将其转换为return new self($options)
将得到相同的结果?
new self
和之间有什么区别new static
?
是否可以使用静态类将静态方法链接在一起?说我想做这样的事情:
$value = TestClass::toValue(5)::add(3)::subtract(2)::add(8)::result();
Run Code Online (Sandbox Code Playgroud)
...显然我希望$ value被分配数字14.这可能吗?
更新:它不起作用(你不能返回"自我" - 它不是一个实例!),但这是我的想法带我的地方:
class TestClass {
public static $currentValue;
public static function toValue($value) {
self::$currentValue = $value;
}
public static function add($value) {
self::$currentValue = self::$currentValue + $value;
return self;
}
public static function subtract($value) {
self::$currentValue = self::$currentValue - $value;
return self;
}
public static function result() {
return self::$value;
}
}
Run Code Online (Sandbox Code Playgroud)
在完成这项工作之后,我认为简单地使用类实例而不是尝试链接静态函数调用(这看起来不可能,除非上面的示例可以某种方式进行调整)更有意义.