-2

所以说我有以下代码,

$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';
    }
} 

谢谢!

4

2 回答 2

2

您可以使用魔术 __toString() 方法将您的类转换为表示字符串。您不应该在构造函数中返回任何内容,如果您尝试将实例用作字符串(在回显的情况下),则会自动调用 __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

于 2013-08-02T04:53:34.323 回答
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();
    }
}
于 2013-08-02T05:54:28.440 回答