我在名为"prog_1.php"的文件中编写了以下代码片段:
<?php
ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(-1);
class SimpleClass {
// property declaration
public $var = 'a default value';
// method declaration
public function displayVar() {
echo $this->var;
}
}
$instance = new SimpleClass();
$assigned = $instance;
$reference =& $instance;
var_dump($instance);
echo "'n";
echo $reference; //At this step I'm getting a "Catchable fatal error"
echo "'n";
var_dump($reference);
?>
我的第一个问题是上面代码的下面一行:
echo $reference;
对于这行代码,我得到以下错误:
**Catchable fatal error:** Object of class SimpleClass could not be converted to string in /var/www/practice/prog_1.php on line 23
我不明白,如果我可以var_dump()
类的对象,那么为什么我不能回声相同?
我的第二个疑问是如果执行以下两个语句:
var_dump($instance);
var_dump($reference);
这两个语句给出了如下相同的输出:
object(SimpleClass)#1 (1) {
["var"]=>
string(15) "a default value"
}
为什么?对象和参照物没有区别吗?上面输出的#1
是什么意思?
希望有人能澄清我的上述疑虑,提供我满意的和最好的类的答案,简单,容易理解和脆的语言。
要拥有对象的字符串表示,请在对象中实现神奇的__toString()方法。这用于将对象序列化为字符串表示。(您可以使用它作为字符串返回(私有)成员,并使您的类为"echo-able"
要回显对象或数组,必须使用print_r($var);对象或数组不是字符串,echo只输出字符串整数等