簡體   English   中英

PHP類-返回對象但回顯字符串

[英]PHP class - return object but echo string

我有一個類CalculatePrice 運行此代碼:

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

do()方法返回另一個稱為PriceObj類。 如果我運行代碼echo $calc->do()則會收到錯誤消息: PriceObj類的對象無法轉換為string

我的問題是:如何仍然可以從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/zh/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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM