Php 可以用_u-toString魔法方法返回几个变量吗?
我有一个包含4个变量的类,我想将它们分别打印为字符串。(在不同的地方分别打印) 这是类的一部分:(如您所见,我使用_-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
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;