2009-09-03 7 views
3

J'ai construit une classe en PHP et je dois déclarer une variable de classe en tant qu'objet. Chaque fois que je veux déclarer un objet vide J'utilise:Variable de classe d'objet PHP

$var=new stdClass; 

Mais si je l'utilise pour déclarer une variable de classe comme

class foo 
{ 
    var $bar=new stdClass; 
} 

une erreur d'analyse se produit. Y at-il un moyen de le faire ou dois-je déclarer la variable de classe en tant qu'objet dans la fonction de constructeur?

PS: J'utilise PHP 4.

Répondre

5

Vous ne pouvez déclarer des valeurs statiques de cette façon pour les membres de la classe, à savoir ints, strings, bools, arrays et ainsi de suite. Vous ne pouvez rien faire qui implique un traitement quelconque, comme l'appel de fonctions ou la création d'objets.

Vous devrez le faire dans le constructeur.

Relevant manual section:

En PHP 4, ne sont autorisés que initialiseurs constants pour les variables var. Pour initialiser des variables avec des valeurs non constantes, vous avez besoin d'une fonction d'initialisation appelée automatiquement lors de la construction d'un objet à partir de la classe. Une telle fonction est appelée un constructeur (voir ci-dessous).

2

Vous ne devriez pas créer votre objet ici.

Vous devriez mieux écrire et poseur getter

<?php 
    class foo 
    { 
     var $bar = null; 

     function foo($object = null) 
     { 
      $this->setBar($object); 
     } 

     function setBar($object = null) 
     { 
      if (null === $object) 
      { 
      $this->bar = new stdClass(); 
      return $this; 
      } 

      $this->bar = $object; 
      return $this; 
     } 
    } 

Par ailleurs, vous devez utiliser pour travailler avec PHP5 POO, qui est plus souple ...