2012-01-26 84 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

相關問題