我想知道我是否可以在PHP中像JavaScript一样,对函数的返回应用函数调用。在JavaScript中,我可以这样做:
var y = 1;
var x = y.toString().concat(' + 1');
console.log(x);
我认为如果可以在PHP中执行几乎相同的操作。我正在考虑递归这个,我并不知道要搜索它的名字。我现在正在尝试:
<?php
class Main {
public function __construct() {
$this->Main = new Main;
}
public function merge(/* this */ $xs, $ys) {
return array_merge($xs, $ys);
}
public function add(/* this */ $xs, $ys) {
return array_push($xs, $ys);
}
}
$aux = new Main;
$x = $aux -> merge([1, 2, 3], [4, 5, 6])
-> add(7)
-> add(8)
-> add(9);
// $x => [1, 2, 3, 4, 5, 6, 7, 8, 9]
?>
这一切都充斥着。我收到一条溢出消息:
Maximum function nesting level of '100' reached
我可以这样做,就像在JavaScript中一样吗?与C#扩展方法几乎相同。
答案 0 :(得分:3)
它叫做方法链接:
class Main {
private $ar = array();
public function merge($xs, $ys) {
$this->ar = array_merge($xs, $ys);
return $this;
}
public function add($ys) {
$this->ar[]= $ys;
return $this;
}
public function toArray(){
return $this->ar;
}
//if you want to echo a string representation
public function __toString(){
return implode(',', $this-ar);
}
}
$aux = new Main;
$x = $aux->merge([1, 2, 3], [4, 5, 6])->add(7)->add(8)-> add(9);
echo $x;
var_dump($x->toArray());
答案 1 :(得分:0)
你可以使用函数的返回,但它不像JavaScript那样漂亮:
<?php
$array1 = array(1, 2, 3);
$array2 = array(4, 5, 6);
$x = array_push(array_push(array_push(array_merge($array1, $array2), 7), 8), 9);
$x
应该是一个包含数字1到9的数组。