php OOP对象/分类返回值

时间:2013-08-02 04:47:57

标签: php syntax

所以说我有以下代码,

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

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

如何让$ obj回显字符串'a'?

如何让$ obj引用或等于object / class返回的内容?

需要从__construct()返回一个值,还需要在另一个类中返回一个普通的私有函数。例如:

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

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

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

谢谢!

2 个答案:

答案 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

答案 1 :(得分: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();
    }
}