Вызов функции извне класса - PullRequest
1 голос
/ 25 декабря 2010

Я пытаюсь вызвать функцию извне класса и у меня возникают проблемы:

class Factorial{

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

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

Может кто-нибудь указать мне правильное направление?

Большое спасибо

Ответы [ 2 ]

3 голосов
/ 25 декабря 2010

Ваша проблема не снаружи, а внутри:

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

Если вы хотите обратиться к другому методу, вы должны использовать $this->methodname, где $this ссылается на экземпляр:

Псевдопеременная $this доступна, когда метод вызывается из контекста объекта.$this является ссылкой на вызывающий объект (обычно это объект, к которому относится метод (...))

Я предлагаю прочитать PHP - OOP - Основы.

2 голосов
/ 25 декабря 2010

$this->factorial($number-1) - это то, что вы хотите вызвать метод класса. Код запутался, потому что вы назвали класс тем же, что и функция (и он считает, что это конструктор).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...