2009-07-19 7 views
1

Je suis novice en programmation orientée objet en PHP. J'ai inclus une classe et l'ai appelée, puis, dans le constructeur de cette classe, j'appelle une fonction privée appelée handleConnections. Pour une raison quelconque, cela me donne une erreur fatale (fonction indéfinie). Une idée pourquoi?Erreur fatale: fonction indéfinie - pourquoi?

La classe:

class Test 
{ 
    function __construct() 
    { 
     handleConnections(); 
    } 

    private function handleConnections() 
    { 
     //do stuff 
    } 
} 

Il semble impeccable et pourtant j'obtenir cette erreur. Si quelqu'un a la moindre idée de ce qui pourrait être faux, s'il vous plaît dites-moi. Merci!

Répondre

4

Juste en expansion sur la réponse de FWH. Lorsque vous créez une classe et que vous l'affectez à une variable, vous appelez n'importe quelle fonction de cette classe en utilisant $ variable-> function(); Mais, parce que vous êtes dans la classe, vous ne savez pas à quoi la classe est affectée, vous devez donc utiliser le mot clé $ this-> pour accéder aux propriétés de la classe. Règle générale, si vous voulez y accéder comme $ obj-> var, accédez-y avec $ this->.

class myClass 
{ 
    function myFunc() 
    { 
     echo "Hi"; 
    } 

    function myOtherFunc() 
    { 
     $this->myFunc(); 
    } 

} 


$obj = new myClass; 

// You access myFunc() like this outside 
$obj->myFunc(); 

// So Access it with $this-> on the inside 
$obj->myOtherFunc(); 

// Both will echo "Hi" 
+0

Dans les langues appropriées OO comme Java, de l'intérieur d'une classe, vous pouvez appeler ses méthodes et champs sans utiliser ce –

+0

Juste pour ajouter, appliquent cette loi à des variables aussi bien, et il est une source de bugs cachés. – Extrakun

4

Essayez avec:

$this->handleConnections(); 

Si vous ne préfixe pas vos appels avec ce $, il essaie d'appeler une fonction globale. $ c'est obligatoire en PHP, même s'il n'y a pas d'ambiguïté.

Questions connexes