2012-09-24 15 views
10

¿Cómo se accede a las propiedades de un objeto PHP?¿Cuál es la sintaxis para acceder a las propiedades del objeto PHP?

Además, ¿cuál es la diferencia entre el acceso a la propiedad de un objeto con $this->$property1 vs $this->property1?

Cuando intento utilizar $this->$property1 me sale el siguiente error:

'PHP: Cannot access empty property'.

documentation de PHP en las propiedades del objeto tiene un comentario que menciona esto, pero el comentario no explica en profundidad.

+0

Tome esta página manual en lugar y buscar "nombres de propiedades variables" sección: http://php.net/manual/en/language.variables.variable.php (la primera parte podría ser interesante para usted también) (se encuentra en la página que ha vinculado en su respuesta, debe leer más detenidamente los documentos) – hakre

+0

¿Tiene problemas con OOP? Sí, me conoces –

Respuesta

6
  1. $property1 // variable específica
  2. $this->property1 // atributo específico

El uso general de clases es, sin "$" de lo contrario se llama a una variable llamada $property1 que podría tomar cualquier valor.

Ejemplo:

class X { 
    public $property1 = 'Value 1'; 
    public $property2 = 'Value 2'; 
} 
$property1 = 'property2'; //Name of attribute 2 
$x_object = new X(); 
echo $x_object->property1; //Return 'Value 1' 
echo $x_object->$property1; //Return 'Value 2' 
9

$this->property1 significa:

utilizar el objeto y obtener la variable propiedad1 con destino a este objeto

$this->$property1 significa:

evaluar la cadena $ propiedad1 y utilizar el resultado para obtener la variable llamada por $ property1 resultado vinculado a este objeto

+0

Otro usuario de SO que puede convertir una página de manual de PHP en una respuesta. ¡Felicitaciones! – hakre

+0

¿Eso es sarcasmo? –

+0

@hakra enlaces a los manuales generalmente no se consideran respuestas, ya que esos enlaces tienden a cambiar ... sin embargo, estoy de acuerdo en que una cita y/o un enlace a la fuente sería una mejor variante para una respuesta –

3

property1 es una cadena mientras $property1 es una variable. Por lo tanto, al acceder a $this->$property1 PHP busca los contenidos de la variable llamada $property1 y porque (probablemente) no existe, está vacío, por eso recibe el error Cannot access empty property.

Cuestiones relacionadas