在__toString()之后的代码中,php代码无法正常工作?
{{1}}
浏览器输出如下:
姓名:鲍勃
卷号:1
其余的线路不工作;
答案 0 :(得分:0)
方法 __ toString 应该返回String而不是调用输出函数。在您的代码中,您执行了类似 echo echo 的操作,因为在方法显示内部会再次调用echo。将 __ toString 更改为:
return $this->display();
和显示方法:
return "Name :".$this->name."<br> Roll No :".$this->roll_no."<br><br>";
此解决方案可修复您的错误,但您应将显示方法名称更改为与其当前行为更匹配的内容,如getString()。
查看命名转换(显示方法名称)最符合逻辑的方法是:
class Student{
private $name;
private $roll_no;
function __construct($name,$roll_no){
$this->name = $name;
$this->roll_no = $roll_no;
}
public function display(){
echo $this; //conversion to string and echo
}
function __toString(){
return "Name :".$this->name."<br> Roll No :".$this->roll_no."<br><br>";
}
}
所以我在 __ toString 中使用显示方法转换为String。目前的用法是:
$std1=new Student("Bob" , 1);
$std1.display();
//or the same:
echo $std1; //the same thing like $std1.display();
答案 1 :(得分:0)
试试这个
class Student{
private $name;
private $roll_no;
function __construct($name,$roll_no){
$this->name = $name;
$this->roll_no = $roll_no;
}
public function display(){
return "Name :".$this->name."<br> Roll No :".$this->roll_no."<br><br>";
}
function __toString(){
return $this->display();
}
}
$std1 = new Student("Bob" , 1);
echo $std1;
$std2 = new Student("John" , 2);
echo $std2;
$std3 = new Student("Tony" , 3);
echo $std3;
$std4 = new Student("Teena" , 4);
echo $std4;