PHP Назначение функции по умолчанию для класса

Я относительно новичок в PHP, но понял, что это мощный инструмент. Прошу прощения за мое невежество здесь.

Я хочу создать набор объектов с функциями по умолчанию.

Поэтому вместо вызова функции в классе мы можем просто вывести переменную класса / объекта, и она может выполнить функцию по умолчанию, т.е. метод toString().

Вопрос: есть ли способ определения функции по умолчанию в классе?

пример

class String {
     public function __construct() {  }

     //This I want to be the default function
     public function toString() {  }

}

использование

$str = new String(...);
print($str); //executes toString()

3 ответа

Решение

Не существует такого понятия, как функция по умолчанию, но существуют магические методы для классов, которые могут запускаться автоматически при определенных обстоятельствах. В вашем случае вы ищете __toString()

http://php.net/manual/en/language.oop5.magic.php

Пример из руководства:

// Declare a simple class
class TestClass
{
    public $foo;

    public function __construct($foo)
    {
        $this->foo = $foo;
    }

    public function __toString()
    {
        return $this->foo;
    }
}

$class = new TestClass('Hello');
echo $class;
?>

__toString() вызывается, когда вы печатаете ваш объект, т.е. echo $str.

__call() является методом по умолчанию для любого класса.

Либо поместите код функции toString в __construct, либо укажите на toString.

class String {
     public function __construct( $str ) { return $this->toString( $str ); }

     //This I want to be the default function
     public function toString( $str ) { return (str)$str; }
}

print new String('test');
Другие вопросы по тегам