как повторить что-то, если вызываемый метод не существует в классе - PullRequest
1 голос
/ 12 января 2020

Я пытаюсь повторить «извините, я не знаю, что делать», если мы вызываем метод, который не существует в моем классе (с именем Pony)

Вот мой класс:

<?php

class Pony{
    public $_name;
    public $_gender;
    public $_color;

    public function __construct($name,$gender,$color)
    {
          $this->_name=$name;
          $this->_gender=$gender;
          $this->_color=$color;
    }


    public function speak(){
        echo "Hiii hiii hiiii<br>";
    }
    public function __destruct()
    {
        echo "I'm a dead pony.<br>";
    }

    public function __toString()
    {
        return "Don't worry, im a pony ! <br>";
    }
}

но когда я пытаюсь написать свое "if-утверждение" внутри моего класса, функция method_exists просто не берет имя моего класса в параметре ..

Заранее спасибо!

1 Ответ

1 голос
/ 12 января 2020

При вызове несуществующего метода класса вызывается метод __call:

class Pony{
    public $_name;
    public $_gender;
    public $_color;

    public function __construct($name,$gender,$color)
    {
          $this->_name=$name;
          $this->_gender=$gender;
          $this->_color=$color;
    }


    public function speak(){
        echo "Hiii hiii hiiii<br>";
    }
    public function __destruct()
    {
        echo "I'm a dead pony.<br>";
    }

    public function __toString()
    {
        return "Don't worry, im a pony ! <br>";
    }

    public function __call($methodName, $arguments)
    {
        return "im a pony, i don't know what to do with {$methodName}! <br>";
    }

}

$p = new Pony('', '', '');
echo $p->swim();

Fiddle здесь .

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