2011-09-23 15 views
10

Cosa significa il simbolo del dollaro in PHP? Ho questo codice:Cosa significa il simbolo del dollaro in 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(); 
?> 

Sembra che il $ indica una variabile del tipo:

$number_of_floors 
$color 

Ma mi confondo quando vedo il seguente: Ci

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

Perché non fanno segni del dollaro prima di queste variabili?

+10

Hm, forse è ora di leggere il [PHP Language Reference] (http://php.net/manual/en/langref.php) di nuovo ... –

+1

Google e leggere le basi di PHP OOP. – Sarfraz

+0

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

risposta

12

Hai ragione, $ è per variabile. Ma in un'istanza di classe, non usi più $ sulle proprietà perché PHP interpreterà e questo potrebbe causare un errore. Ad esempio, se si utilizza

$bldgA->$number_of_floors; 

questo non restituirà la proprietà $ number_of_floors dell'oggetto, ma il PHP prima guardare il valore di $ number_of_floors, diciamo 3, per esempio, in modo che la riga precedente sarebbe

$bldgA->3; 

E che vi darà un errore

+1

Buona spiegazione, facile da capire. – Anson

0

Sì, è variabile con l'istanza di classe assegnata. E quando obietta allora stai chiamando/ottenendo argomenti come questo. Leggi di OOP in PHP, per favore. Potrebbe essere molto utile per te e aiutarti a capire come funziona :)

+0

Sbagliato. Non è possibile assegnare una classe, solo un'istanza di una classe. – markus

3

$ è il modo per fare riferimento alle variabili in PHP. Le variabili in PHP sono digitate dinamicamente, il che significa che il loro tipo è determinato da ciò che viene loro assegnato. Ecco la pagina su variables dal manuale PHP.

$ a = "Questa è una stringa";

$ b = 1; // This is an

$ bldgA = new Building ('rosso'); // bldgA è una variabile e un oggetto (aka un'istanza) di classe Building.

$ bldgA-> describe(); // Questo chiama describe(), che è una funzione membro di class Building (ricorda che $ bldgA è stato dichiarato come oggetto di classe Building)

$ bldgA-> number_of_floors; // number_of_floors è un membro di dati di classe Building. Puoi considerarlo come una variabile all'interno di una classe, ma dal momento che fa parte della classe con un nome fisso, non ti riferisci ad esso con $.

0

Il $ bldgA è una variabile per la Classe di

in modo da poter accedere alla funzione classe utilizzando $ Building-> function_name

esempio:

$foo = $bldgA->describe(); 

i $ number_of_floors è un variabile all'interno della classe

+0

$ bldgA non è solo una variabile – peko

+0

sì, mi scusi, stavo cercando di renderlo più semplice da capire –

-1

Quando si scrive $bldgA = new Building('red'); si assegna la variabile $bldgA un oggetto di nuova creazione della classe Building. Gli oggetti sono un possibile tipo di variabili.

In generale quando si visualizza $ si riferisce sempre alle variabili. $bldgA->number_of_floors; dovrebbe essere letto come: accedere alla proprietà dell'oggetto in variabile $bldgA

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

in questo caso $ bldgA è un oggetto.

$bldgA->describe(); 

chiama la funzione di descrivere() dall'oggetto $ bldgA

$bldgA->number_of_floors; 

acces i number_of_floors variabili dall'oggetto $ bldgA

ma si dovrebbe davvero dare un'occhiata a php.net/manual/en/language.oop5.basic.php

0

$bldgA->number_of_floors; non chiamare una variabile locale, ma una proprietà (è come una parte variabile locale della definizione di classe) di una classe.

Tuttavia è possibile chiamare $bldgA->$property_name; dove $ nome_casa è un nome della proprietà che si desidera chiamare. Questo è chiamato variabili variabili e qualcosa che probabilmente dovresti esaminare in dopo hai compreso le nozioni di base di OOP.

Problemi correlati