Estoy tratando de imprimir una propiedad de la clase simple a continuación. Pero en su lugar me sale el error de arriba. No he encontrado una respuesta a preguntas similares aquí. El error se dispara en esta línea:
echo "$object1 name = " . $object1->name . "<br>";¿Usando XAMPP en la Ayuda de Windows?
<?php $object1 = new User("Pickle", "YouGotIt"); print_r($object1); $object1->name = "Alice"; echo "$object1 name = " . $object1->name . "<br>"; /* this triggers the error */ class User { public $name, $password; function __construct($n, $p) { // class constructor $name = $n; $password = $p; } } ?>Hay dos cosas mal en tu código,
Está utilizando variables locales en su constructor de clase, no propiedades de instancia. Su método constructor debería verse así:
function __construct($n, $p) { $this->name = $n; $this->password = $p; } Ahora viene su error, el objeto de clase no se pudo convertir en una cadena . Esto se debe a este $object en la declaración de echo ,
echo "$object1";si desea imprimir el contenido de su objeto como una cadena, puede usar
print_r($object, true);En mi caso, el problema fue la forma en que estaba inicializando la variable de clase.
Este fue mi código:
public function __construct(User $userObj) { $this->$userObj = $userObj; }y lo resolví cambiándolo a lo siguiente:
public function __construct(User $userObj) { $this->userObj = $userObj; } La línea en el primer fragmento causó el problema: $this->$userObj = $userObj