这是我想要做的:
class number {
var $value ;
function number($n=0) {
$this->value = $n ;
}
function add($n) {
$x = new number($n) ;
$this->value += $x->value ;
}
}
这个例子当然很荒谬,但它说明了我想在一个更严肃的项目中做的那种递归。(我实际上会操纵图像而不是数字,但我认为这在这里并不重要。
那么,它应该工作吗?
谢谢
class Number {
protected $value;
public function __construct($n = 0) {
$this->value = $n;
}
public function add($n) {
$x = new static($n); // or self($x), if you're on PHP < 5.3
$this->value += $x->value;
}
}
修复它以实际使其工作。是的,这是完全可能和明智的(嗯,这个特定的代码是否有意义是有争议的,但总的来说)。这不是真正的递归。您只是在另一个类的方法中实例化一个类。你实例化的类与你实例化它的方法所属的类相同,这丝毫不重要(现在这是一个复杂的句子)。
为你做了个例子。下面是一个小例子:
class number {
var $value ;
function number($n=0) {
$this->value = $n ;
}
function add($n) {
$x = new number($n) ;
$this->value += $x->value ;
return $this->value;
}
}
$foo = new number;
echo $foo->add(2);
echo $foo->add(2);
您的代码"$x->value()"中存在错误。值不是方法 - 它是字段,应该调用$x->值