В языках программирования я заметил, что объекты не могут быть преобразованы в строку. Почему они реализуют таким образом.
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 — Я не хочу способ преобразования этих объектов в строку, я только хочу знать, почему объект не может преобразовать в строки
В общем, когда вы печатаете один объект, как в первом примере, то на самом деле вы печатаете toString()
метод объекта.
В PHP вы можете вручную переопределить __toString()
метод в классе в следующем wat:
class abc {
public $Name;
public $Number;
function MrFunction() { /* bla bla bla */ }
function __toString() {
return $this->Name.' - '.$this->Number;
}
}
И тогда вы сможете выполнить echo new abc()
,
PS: по договоренности, классы начинаются с прописных букв, а переменные с строчных. Поэтому было бы Abc
, name
а также number
вместо abc
, Name
а также Number
,
В JavaScript
Вам нужно использовать JSON.stringify
,
var obj={a:1,b:2};
JSON.stringify(obj); // output "{"a":1,"b":2}"
В PHP Вам нужно использовать serialize
echo serialize($foo);