【问题标题】:Call function from outside a class从类外调用函数
【发布时间】:2010-12-25 17:13:16
【问题描述】:

我正在尝试从类外部调用函数并遇到问题:

class Factorial{

    public function factorial($number) {
        if ($number < 2) {
            return 1;
        } else {
            return ($number * factorial($number-1));
        }
    }
}

$f = new Factorial();
echo $f->factorial(5);

有人可以指点我正确的方向吗?

非常感谢

【问题讨论】:

  • 另请注意,创建对象时会调用方法factorial():因为它与类本身同名,所以它被视为构造方法。 (如果您启用通知和错误显示,它将显示 $number 的缺失和未定义错误)

标签: php class function


【解决方案1】:

你的问题不在外面,而是在里面:

public function factorial($number) {
    if ($number < 2) {
        return 1;
    } else {
        return ($number * $this->factorial($number-1));
    }
}

如果你想引用另一种方法,你必须使用 $this-&gt;methodname 其中$this 指的是实例:

当从对象上下文中调用方法时,伪变量$this 可用。 $this 是对调用对象的引用(通常是方法所属的对象(...))

我建议阅读PHP - OOP - The Basics

【讨论】:

    【解决方案2】:

    $this-&gt;factorial($number-1) 是你要调用的类方法。代码变得混乱,因为您将类命名为与函数相同的名称(并且它认为它是一个构造函数)。

    【讨论】:

    • 谢谢你迈克尔,你绝对正确。我已经更改了班级的名称,一切都很顺利。 :D
    猜你喜欢
    • 2015-03-07
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 2011-02-18
    • 2012-08-24
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多