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');