Php 可以用_u-toString魔法方法返回几个变量吗?

Php 可以用_u-toString魔法方法返回几个变量吗?,php,class,Php,Class,我有一个包含4个变量的类,我想将它们分别打印为字符串。(在不同的地方分别打印) 这是类的一部分:(如您所见,我使用_-tostring方法只返回一个变量,但我希望对所有变量都使用它。) 我必须在这里打印: function repliesView(){ $arr=objectsToArr(); $count=count($arr)-1; for($i=0;$i<=$count;$count--){ echo "<p>name:$arr[$count]->name<b

我有一个包含4个变量的类,我想将它们分别打印为字符串。(在不同的地方分别打印)

这是类的一部分:(如您所见,我使用_-tostring方法只返回一个变量,但我希望对所有变量都使用它。)

我必须在这里打印:

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>";
}
函数repliesView(){
$arr=objectsToArr();
$count=计数($arr)-1;

对于($i=0;$i您可能可以编写一个函数来执行此操作,但不使用
\uuu-toString
\uu-toString
是一个特殊函数,您不应该真正使用它来执行任何与应用程序关键相关的操作。请使用它进行调试和检查


函数toHTML(){ 返回“”.htmlentities($this->name)。“
” “msg:.htmlentities($this->msg)。”
“日期:”.htmlentities($this->msg_date)。“

”; }
然后:

函数repliesView(){
$arr=objectsToArr();
$count=计数($arr)-1;
对于($i=0;$i toHTML();
}
}

\uu toString
应该将整个对象表示为字符串

就目前而言,您只需为每个字段设置一个get方法,就可以轻松地检索它们。最终,您可以使用
\uuu-toString
检索最常见的字段,以节省一些代码(仍然不是一个很好的做法)。

the
\uu-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

我认为您混淆了
\uuuuuToString()
的功能。
\uuuuToString()
在尝试将对象用作字符串时执行

例如:

如果希望能够访问对象中的私有/受保护成员变量,请使用
\u get()

例如:


那么,我如何将对象方法打印为字符串呢?我必须在php函数中使用html语句打印它们。您的属性是公共的,因此您可以立即访问。您能否详细介绍一下您的用例?我将我的用例添加到主题中…请注意。问题是我如何将html添加到此中?在调用时将其添加到
echo
中方法或
返回方法中的
。任何一个都可以实现。我的意思是如何让html参与其中?当我调用echo“$dash->getName()

时,它会给出一个错误,即我将对象打印为字符串。问题已解决,但请给出一个示例?您必须退出方法调用,例如:
”“$dash->getName()。”

我添加了我的案例,请观看。好的,那么你可以继续使用
echo”名称:“..$arr[$count]->名称。”
“;
或者实现一个getter方法
公共函数getName(){返回$this->name;}
并像这样调用:
echo”名称:“$arr[$count]->getName()”
function repliesView() {
    $arr = objectsToArr();
    $count = count($arr)-1;
    for ($i = 0; $i <= $count; $count--) {
        echo $arr[$count]->toHTML();
    }
}
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
class Dash {
    public function __tostring() { return 'Hello'; }
}

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

>> Hello
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;