2010-03-02 6 views
5

Sto cercando di capire come utilizzare un metodo all'interno della sua stessa classe. Esempio:PHP: Come posso accedere/utilizzare un metodo all'interno della sua stessa classe?

class demoClass 
{ 
    function demoFunction1() 
    { 
     //function code here 
    } 

    function demoFunction2() 
    { 
     //call previously declared method 
     demoFunction1(); 
    } 
} 

L'unico modo che ho trovato per lavorare è quando creo un nuovo intsnace della classe all'interno del metodo, e poi lo chiamo. Esempio:

class demoClass 
{ 
    function demoFunction1() 
    { 
     //function code here 
    } 

    function demoFunction2() 
    { 
     $thisClassInstance = new demoClass(); 
     //call previously declared method 
     $thisClassInstance->demoFunction1(); 
    } 
} 

ma che non sembra giusto ... o è così? qualche aiuto?

grazie

risposta

10

$this-> all'interno di un oggetto, o self:: in un contesto statico (pro o da un metodo statico).

7

è necessario utilizzare $this per fare riferimento all'oggetto corrente:

La pseudo-variabile $this è disponibile quando un metodo viene chiamato dall'interno di un contesto dell'oggetto. $this è un riferimento all'oggetto chiamante (solitamente l'oggetto a cui appartiene il metodo, ma possibilmente un altro oggetto, se il metodo viene richiamato staticamente dal contesto di un oggetto secondario).

Quindi:

class demoClass 
{ 
    function demoFunction1() 
    { 
     //function code here 
    } 

    function demoFunction2() 
    { 
     // $this refers to the current object of this class 
     $this->demoFunction1(); 
    } 
} 
4

Usa "$ this" per riferirsi a se stesso.

class demoClass 
{ 
    function demoFunction1() 
    { 
     //function code here 
    } 

    function demoFunction2() 
    { 
     //call previously declared method 
     $this->demoFunction1(); 
    } 
} 
5

Basta usare:

$this->demoFunction1(); 
5

Usa $this parola chiave per fare riferimento a un'istanza della classe corrente:

class demoClass 
{ 
    function demoFunction1() 
    { 
     //function code here 
    } 

    function demoFunction2() 
    { 
     $this->demoFunction1(); 
    } 
} 
Problemi correlati