PHP 返回对象但回显字符串


PHP return object but echo string

我有一个类CalculatePrice .运行此代码:

$calc = new CalculatePrice( 10, 20 );
print_r ( $calc->do() );

do() 方法返回一个名为 PriceObj 的不同类。如果我echo $calc->do()运行代码,则会出现错误:类 PriceObj 的对象无法转换为字符串

我的问题是:我怎么仍然可以从 do() 方法返回一个对象,但在对它运行回显时,它会返回一个字符串甚至更简单;真或假?这可能吗?

当对象可以使用 __toString()-方法转换为字符串时,这是可能的:

class A {
    private $val;
    public function __construct($myVal) {
       $this->val = $myVal;
    }
    public function __toString() {
       return "I hold ".$this->val;
    }
}
$obj = new A(4);
echo $obj; // will print 'I hold 4';

您只能回显字符串。但幸运的是,您可以将对象转换为字符串。这可以通过提供__toString()功能自动完成

这是一个神奇的方法,可以完全按照你想要的去做:用一个对象做一个字符串。请参阅: http://www.php.net/manual/en/language.oop5.magic.php#object.tostring

基本的事情是你是唯一知道如何从对象制作字符串的人(例如显示里面的全部或部分变量),所以你需要自己实现字符串的构建方式。

PriceObj上实现魔术方法__toString()

所以:

public function __toString()
{
    echo $this->result; // The calculated price
}

请参阅 http://php.net/manual/en/language.oop5.magic.php