所以说我有以下代码,
$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';
}
}
谢谢!
答案 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();
}
}