静的クラスを使用して静的メソッドを連鎖させることは可能ですか? 次のようなことをしたいとします。
$value = TestClass::toValue(5)::add(3)::subtract(2)::add(8)::result();
. . . 明らかに、$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;
}
}
それを解決した後、静的関数呼び出しをチェーンしようとするのではなく、単にクラスインスタンスを操作する方が理にかなっていると思います(上記の例を何らかの方法で調整できない限り、可能ではないようです)。