PHP类 - 返回对象但是回显字符串

时间:2013-11-03 12:59:13

标签: php class

我有一个班级CalculatePrice。运行此代码:

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

do()方法返回一个名为PriceObj的其他类。如果我运行代码echo $calc->do(),那么我会收到错误:类PriceObj的对象无法转换为字符串

我的问题是:如何仍然从do()方法返回一个对象,但是当对它运行回声时,它会返回一个字符串甚至更简单;对或错?这可能吗?

3 个答案:

答案 0 :(得分:3)

当使用__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';

答案 1 :(得分:1)

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

自动完成

这是一种魔术方法,可以完全按照您的意愿执行:从对象中创建一个字符串。请参阅:http://www.php.net/manual/en/language.oop5.magic.php#object.tostring

基本的是你是唯一一个知道如何从对象中创建一个字符串的人(例如,在内部显示全部或部分变量),所以你需要实现字符串的构建方式。

答案 2 :(得分:1)

__toString()上实施魔术方法PriceObj

所以:

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

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