вызов метода из другого метода в том же классе PHP - PullRequest
36 голосов
/ 08 февраля 2010

Я пытаюсь использовать метод из другого метода в классе. У меня нет большого опыта в PHP5 ООП, и я искал ответы, но не мог найти ни одного. Я пытаюсь использовать getClientInfo () в sendRequest (), который находится в том же классе.

class DomainHandler {

    public static function getClientInfo($db, $client_id)
    {
        //Do stuff
    }

    public static function sendRequest($details)
    {

        require_once('MySQL.class.php');
        $db = new MySQL;

        getClientInfo($db, $client);
    }
}

И это говорит мне:

Неустранимая ошибка: вызов неопределенного функция getClientInfo ()

Я тоже пробовал

parent::getClientInfo($db, $client); 

и

$this->getClientInfo($db, $client);

безрезультатно.

Есть идеи?

Ответы [ 3 ]

42 голосов
/ 08 февраля 2010

Это статический метод, поэтому вы должны вызывать его с помощью self::getClientInfo или DomainHandler::getClientInfo.

Также: вы можете захотеть прочитать об объектно-ориентированном программировании, так как похоже, что вы еще не поняли, о чем оно на самом деле (это не просто размещение функций между классами Foo {и} и размещение публичной статики перед ними)

18 голосов
/ 08 февраля 2010

Вы объявляете функции как static и, следовательно, они не находятся в контексте объекта & ndash; Вы можете позвонить им с DomainHandler::getClientInfo() или self::getClientInfo().

Если вам явно не нужно, чтобы функции были статичными, вы можете удалить ключевое слово static, и тогда будет работать $this->getClientInfo().

3 голосов
/ 08 февраля 2010

'self' - это ключевое слово, которое вы ищете

тем не менее, вы можете объяснить, почему ваши методы должны быть статичными? «static» - плохой стиль, и его следует избегать.

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