为什么对象不能转换为字符串

why objects cannot convert to a string

在编程语言中,我注意到对象无法转换为字符串。他们为什么要这样实施。

php

class abc {
    public $Name;
    public $Number;
    function MrFunction() { /* bla bla bla */ }
}

$foo = new abc();

print_r($foo); //output - abc Object ( [Name] => [Number] => )
echo '<br>';
echo($foo); //output - Catchable fatal error: Object of class abc could not be converted to string on line 11

js

var obj={a:1,b:2};
obj.toString() // output "[object Object]"

P.S - 我不想将这些对象转换为字符串我只想知道为什么对象不能转换为字符串

在javascript。 你需要使用 JSON.stringify.

var obj={a:1,b:2};
JSON.stringify(obj); // output "{"a":1,"b":2}"

在PHP。你需要使用 serialize

echo serialize($foo);

一般来说,当你像第一个例子那样直接打印一个对象时,你实际打印的是对象的toString()方法。

在PHP中你可以手动重写class中的__toString()方法,如下:

class abc {
    public $Name;
    public $Number;
    function MrFunction() { /* bla bla bla */ }

    function __toString() {
        return $this->Name.' - '.$this->Number;
    }
}

然后你就可以执行echo new abc().

PS:按照惯例,classes 以大写开头,变量以小写开头。因此它将是 Abcnamenumber 而不是 abcNameNumber