PHP为类分配默认函数

时间:2012-01-26 14:30:35

标签: php object-to-string

我相对较新的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 个答案:

答案 0 :(得分:10)

没有默认函数这样的东西,但是在某些情况下可以自动触发类的魔术方法。在您的情况下,您正在寻找__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 :(得分:1)

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

答案 2 :(得分:1)

打印对象时会调用

__toString(),即echo $ str。

__call()是任何类的默认方法。