2010-11-08 23 views
10

Eventuali duplicati:
PHP: self vs this

Ciao, Potrebbe aiutarmi a capire il significato del nome della variabile PHP $this?

Grazie per il vostro aiuto.

+2

Eventuali duplicati: http://stackoverflow.com/questions/151969/php-self-vs-this. Inoltre, per favore non essere troppo carino nelle domande. ;) – birryree

+2

Congratulazioni per ampliare le tue conoscenze all'età di 12 anni! Ma dal momento che non è pertinente alla domanda, potresti modificare la domanda per rimuoverla? –

+0

Sembra che le persone su Stack Overflow non sappiano cosa sia "I am 12 years and what is this". – JAL

risposta

16

$this si riferisce alla classe ci si trova.

Per esempio

Class Car { 

    function test() { 
     return "Test function called"; 
    } 

    function another_test() { 
     echo $this->test(); // This will echo "Test function called"; 
    } 
} 

Spero che questo aiuti.

+0

È un modo di fare riferimento a se stesso ... o chiamare metodi o leggere le variabili da se stesso. – jodm

+5

in realtà, self si riferisce alla classe corrente in cui ci si trova. $ Si riferisce all'istanza dell'oggetto corrente della classe in cui ci si trova. –

+0

Non eseguirà il test "echo" chiamato "poiché si accede al' test' variabile membro (che non esiste) al contrario del metodo 'test()'. Dovresti cambiarlo in 'echo $ this-> test()' ... – ircmaxell

1

$this è una variabile protetta che viene utilizzata all'interno di un oggetto, $this consente di accedere a un file di classe internamente.

Esempio

Class Xela 
{ 
    var age; //Point 1 

    public function __construct($age) 
    { 
     $this->setAge($age); //setAge is called by $this internally so the private method will be run 
    } 

    private function setAge($age) 
    { 
     $this->age = $age; //$this->age is the variable set at point 1 
    } 
} 

suo fondamentalmente un problema di portata variabile, $this è consentito solo all'interno di un oggetto che è stato avviato e si riferisce a tale oggetto e le sue genitori solo, è possibile eseguire i metodi privati ​​e impostare le variabili private in cui come fuori dal campo di applicazione non è possibile.

anche la parola self è molto simile a parte si riferisce a metodi statici all'interno classe, statica in pratica significa che non puoi utilizzare $this come non un oggetto ancora, è necessario utilizzare self::setAge(); e se tale metodo setAge è dichiarato statico allora non si può chiamare da un istante di tale oggetto/object

Alcuni link per voi per iniziare:

+0

Mentre capisco che stai spiegando a un nuovo arrivato OOP, per favore non fare riferimento agli oggetti come classi. $ questo è usato per riferirsi a proprietà e metodi dell'oggetto, mentre self :: è usato per riferirsi a proprietà e metodi di classe. Penso che sia importante spiegare la differenza tra i due. – Craige