PHP Назначение функции по умолчанию для класса - PullRequest
4 голосов
/ 26 января 2012

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

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

Так что вместо вызова функции в классе мы можем просто вывести переменную class / object иможет выполнить функцию по умолчанию, т.е. метод 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 ]

10 голосов
/ 26 января 2012

Нет такой вещи, как функция по умолчанию, но есть магические методы для классов, которые могут запускаться автоматически при определенных обстоятельствах.В вашем случае вы ищете __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;
?>
1 голос
/ 26 января 2012

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

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

1 голос
/ 26 января 2012

Либо поместите код функции 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...