假设我有以下代码,
$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';
}
}
谢谢!
您可以使用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
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();
}
}