2013-08-02 44 views
-2

所以說我有下面的代碼,PHP OOP對象/歸類返回值

$obj = new foo(); 
echo $obj; 

class foo { 
    public function __construct() 
    { 
     return 'a'; 
    } 
} 

如何使$ OBJ呼應字符串 'A'?

如何讓$ obj參照或等於對象/類返回的內容?

需要從__construct()返回一個值,並且還需要在另一個類中返回一個普通的私有函數。例如:

$obj2 = new foo2(); 
echo $obj2; 

class foo2 { 
    public function __construct() 
    { 
     bar(); 
    } 

    private bar() 
    { 
     return 'a'; 
    } 
} 

謝謝!

+0

我只是想在這裏提到,這是非常罕見的(即使可能),我不能想到任何用例爲什麼有人會需要它。 – whereismydipp

+0

在發佈之前,您是否至少試過閱讀精美的手冊? –

回答

2

您可以使用magic __toString()方法將您的類轉換爲表示字符串。 你不應該在你的構造函數中返回一些東西,如果你試圖使用你的實例作爲字符串(在echo的情況下),將自動調用__toString()。

從php.net:

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

http://www.php.net/manual/en/language.oop5.magic.php#object.tostring

2

中的構造PHP更像初始化功能;它們的返回值並未使用,與JavaScript不同。

如果你想改變的對象通常是呼應你需要提供魔法__toString()方法方式:

class foo 
{ 
    private $value; 

    public function __construct() 
    { 
     $this->value = 'a'; 
    } 

    public function __toString() 
    { 
     return $this->value; 
    } 
} 

,將返回值一個私有方法可以以類似的方式被使用:

class foo2 
{ 
    private function bar() 
    { 
     return 'a'; 
    } 

    public function __toString() 
    { 
     return $this->bar(); 
    } 
}