0

4 つの変数を持つクラスがあり、それらを文字列として個別に出力したいと考えています。(それらのそれぞれを異なる場所に印刷します)。

これはクラスの一部です。

class dash
{
public $name;
public $msg;
public $msg_date;
public $votes;

function __construct($name,$msg,$msg_date,$votes){
$this->name=$name;
$this->msg=$msg;
$this->msg_date=$msg_date;
$this->votes=$votes;}

public function __toString(){
return $this->name;
}

ここに印刷する必要があります:

function repliesView(){
$arr=objectsToArr();
$count=count($arr)-1;
for($i=0;$i<=$count;$count--){
echo "<p>name:$arr[$count]->name<br />"; 
echo "msg:$arr[$count]->msg<br />";
echo "date:arr[$count]->msg_date</p>";
}
4

4 に答える 4

1

__toStringオブジェクト全体を文字列として表現することになっています。

OOPに関する限り、フィールドごとに get メソッドを用意するだけで、簡単に取得できるようになります。最終的__toStringに、いくつかのコードを節約するために、最も一般的なフィールドを取得するために を使用できます (まだあまり良い方法ではありません)。

于 2013-03-29T16:11:04.507 に答える
0

おそらくこれを行う関数を作成できますが、使用しないでください__toString__toStringは特別な関数であるため、アプリケーション クリティカルなことを行うために実際に使用するべきではありません。デバッグと検査に使用します。


function toHTML() {
    return "<p>" . htmlentities($this->name) . "<br />"
      . "msg: " . htmlentities($this->msg) . "<br />"
      . "date: " . htmlentities($this->msg_date) . "</p>";
}

それで:

function repliesView() {
    $arr = objectsToArr();
    $count = count($arr)-1;
    for ($i = 0; $i <= $count; $count--) {
        echo $arr[$count]->toHTML();
    }
}
于 2013-03-29T16:08:19.940 に答える
0

この__toString()方法はここではあまり役に立ちませんが、いつでも次のようなことができます。

class dash
{
    public $name;
    public $msg;
    public $msg_date;
    public $votes;
    function __construct($name, $msg, $msg_date, $votes) {
        $this->name = $name;
        $this->msg = $msg;
        $this->msg_date = $msg_date;
        $this->votes = $votes;
    }
    public function getName() {
        return($this->name);
    }
    public function getMsg() {
        return($this->msg);
    }
    public function getMsgDate() {
        return($this->msg_date);
    }
    public function getVotes() {
        return($this->votes);
    }
}

クラスを初期化した後、メソッドを呼び出します。

$dash = new dash("John Doe", "Message text", "12/4/13", 4);
echo($dash->getName());
// Which would return John Doe
于 2013-03-29T16:14:14.450 に答える
0

私はあなたが何を混同していると思います__toString()__toString()オブジェクトを文字列として使用しようとすると実行されます。

例えば:

class Dash {
    public function __tostring() { return 'Hello'; }
}

$obj = new Dash();
echo (string) $obj;

>> Hello

オブジェクト内のプライベート/保護されたメンバー変数にアクセスできるようにする場合は、__get().

例えば:

class Dash {
    protected $var1, $var2;
    public function __get($k) { 
        if ($k === 'var1' || $k === 'var2') {
            return (string) $this->$k; 
        }
    }
}

$obj = new Dash();
echo $obj->var1;
echo $obj->var2;
于 2013-03-29T16:44:47.340 に答える