这是我想做的事情:
class number {
var $value ;
function number($n=0) {
$this->value = $n ;
}
function add($n) {
$x = new number($n) ;
$this->value += $x->value ;
}
}
这个例子当然是荒谬的,但它说明了我想在一个更严肃的项目中做的递归。 (我实际上是在操纵图像而不是数字,但我认为这并不重要。)
那么,它应该有用吗?
由于
答案 0 :(得分:1)
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;
}
}
修正了它实际上使它工作。是的,这是完全可能和明智的(好吧,这个特定的代码是否有意义,但一般而言,这是有争议的)。这不是真正的递归。您只是在另一个类的方法中实例化一个类。最轻微的是,你实例化的类与你实例化它的方法所属的类相同(现在这是一个复杂的句子)。
答案 1 :(得分:0)
为你做例子。这是一个小例子:
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-&gt; value()”出错。值不是方法 - 它是字段,应该调用$ x-&gt; value