2012-01-26 42 views
4

虽然相对较新的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() 

回答

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; 
?> 
+0

这不仅仅是作为一种方式来定义当请求字符串时应该如何返回类? – MetalFrog

+2

是的,但这似乎是这里的问题 –

+0

我喜欢这种方法,非常清晰和简单,不能相信谷歌没有找到它。 Thankyou这么多.. – IEnumerable

1

要么把里面__construct ToString函数的代码,或点的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'); 
1

__toString()在打印对象时调用,即echo $ str。

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

+0

所有的魔法功能都可以超载吗? – IEnumerable

相关问题