2011-09-23 87 views
10

¿Qué significa el signo de dólar en PHP? Tengo este código:¿Qué significa el signo de dólar en PHP?

<?php 
    class Building { 
    public $number_of_floors = 5; 
    private $color; 

    public function __construct($paint) { 
     $this->color = $paint; 
    } 

    public function describe() { 
     printf('This building has %d floors. It is %s in color.', 
     $this->number_of_floors, 
     $this->color 
    ); 
    } 
    } 

    $bldgA = new Building('red'); 

    $bldgA->describe(); 
?> 

Parece que el $ indica una variable como:

$number_of_floors 
$color 

Pero se confunden cuando veo los siguientes:

$bldgA->describe(); 
$bldgA->number_of_floors; 

Por qué no hay signos de dólar antes de estas variables?

+10

Hm, tal vez es hora de leer la [Referencia del lenguaje PHP] (http://php.net/manual/en/langref.php) de nuevo ... –

+1

Google y lea los conceptos básicos de PHP OOP. – Sarfraz

+0

http://www.php.net/manual/en/language.oop5.basic.php – JJJ

Respuesta

12

Tienes razón, el $ es para variable. Pero en una instancia de clase, ya no usas $ en las propiedades porque PHP lo interpretaría y esto puede causarte un error. Por ejemplo, si se utiliza

$bldgA->$number_of_floors; 

esto no va a devolver la propiedad $ number_of_floors del objeto, sino PHP buscará primero en el valor de $ number_of_floors, digamos 3, por ejemplo, por lo que la línea anterior sería

$bldgA->3; 

Y que le dará un error

+1

buena explicación fácil de entender. – Anson

0

Sí, eso es variable con la instancia de clase asignada. Y cuando se opone, entonces estás llamando/obteniendo argumentos de ese modo. Lea acerca de OOP en PHP, por favor. Puede ser muy útil para usted y ayudarlo a entender cómo funciona :)

+0

incorrecto No se puede asignar una clase, solo una instancia de una clase. – markus

3

$ es la forma de referirse a las variables en PHP. Las variables en PHP se tipean dinámicamente, lo que significa que su tipo está determinado por lo que se les ha asignado. Aquí está la página sobre variables del manual de PHP.

$ a = "Esto es una cadena";

$ b = 1; // Esto es un int

$ bldgA = new Building ('red'); // bldgA es una variable y un objeto (también conocido como instancia) de la clase Building.

$ bldgA-> describe(); // Esto describe describe(), que es una función miembro de la clase Building (recuerda que $ bldgA se declaró como un objeto de la clase Building)

$ bldgA-> number_of_floors; // number_of_floors es un miembro de datos de la clase Building. Puedes pensar que es una variable dentro de una clase, pero como es parte de la clase con un nombre fijo, no te refieres a él con $.

0

El bldgA $ es una variable para la construcción de clase

para que pueda acceder a la función de clases utilizando $ Edificio-> function_name

ejemplo:

$foo = $bldgA->describe(); 

los $ number_of_floors es una variable dentro de la clase

+0

$ bldgA no es solo una variable – peko

+0

sí, lo siento, estaba tratando de que sea fácil de entender –

-1

Al escribir $bldgA = new Building('red'); asigna la variable $bldgA un objeto recién creado de la clase Building. Los objetos son un tipo posible de variables.

En general, cuando ve $ siempre se refiere a las variables. $bldgA->number_of_floors; debe leerse como: acceso a la propiedad del objeto en la variable $bldgA

2
$bldgA = new Building('red'); 

en este caso $ bldgA es un objeto.

$bldgA->describe(); 

llama a la función describe() del objeto $ bldgA

$bldgA->number_of_floors; 

acces las number_of_floors variables del objeto $ bldgA

pero que realmente debería echar un vistazo a php.net/manual/en/language.oop5.basic.php

0

$bldgA->number_of_floors; no dice que una variable local, sino una propiedad (que es como una parte variable local de la definición de clase) de una clase.

Sin embargo, es posible llamar al $bldgA->$property_name; donde $ property_name es el nombre de la propiedad que desea llamar. Esto se conoce como variables variables y es probable que tenga que consultar después de haber comprendido los principios básicos de OOP.

Cuestiones relacionadas