2010-12-23 3 views
6

Toute idée pourquoi je reçois cette erreur:Avertissement: manquant 1 argument

Warning: Missing argument 1 for person::__construct(), called in /home/fishbein/public_html/dev/OOP/index.php on line 5 and defined in /home/fishbein/public_html/dev/OOP/class_lib.php on line 6 

Warning: Missing argument 1 for person::__construct(), called in /home/fishbein/public_html/dev/OOP/index.php on line 6 and defined in /home/fishbein/public_html/dev/OOP/class_lib.php on line 6 

Avec ce code:

<? 
    class person { 

      var $name; 

      function __construct($persons_name) {  
      $this->name = $persons_name;   
      } 

      function set_name($new_name) { 
       $this->name = $new_name; 
      } 

      function get_name() { 
       return $this->name; 
      } 

    } 
?> 

J'utilise aussi dans mon fichier d'index:

$tyler = new person("Tyler"); 
+3

Vous devez publier les lignes 5 et 6 sur index.php. C'est là que le bug est. – Chris

Répondre

11

Lorsque vous avez instancié: $obj = new person(); au lieu de $obj = new person("joe");

+1

Mais, j'utilise $ tyler = new person ("Tyler"); – Phil

+0

$ tyler = nouvelle personne; $ tyler :: set_name ("Tyler"); ... supprime la construction et essaie comme ça. –

+6

Dans votre classe, faites la fonction __construct ($ persons_name = ""). – Babiker

2

Vous appelez le constructeur sans passer dans un argument. Peut-être que vous faites quelque chose comme $p = new person(); au lieu de $p = new person("theirName");

+0

@Phil: C'est à la fin de la réponse de Brian: '$ p = new Person (" leurNom ");' –

+0

J'ai fait ceci: $ tyler = new person ("Tyler"); – Phil

4
$persons_name = "" 

Set comme ça dans l'argumentation. Mais ce n'est pas une solution. Vous pouvez supprimer construct, créer une nouvelle instance, puis définir le nom. Si le vôtre ne fonctionne pas en quelque sorte.

+0

+1 pour expliquer __construct(). __construct ($ persons_name = "") est correct. – jhamPac

0

Il semble: Si le nom de la classe est le même que le nom de la fonction, cet avertissement est donné. Si vous nommez la fonction différemment du nom de la classe, cela semble OK. Vous devez fournir des arguments que lors de l'appel qu'il fonctionne pas à la classe instanciation

0

Essayez ce code

function __construct($persons_name= NULL) {  
      $this->name = $persons_name;   
      } 

NULL initialisés dans la méthode de construction.

Questions connexes