2010-12-23 10 views
6

Cualquier idea de por qué me sale este error:Advertencia: Falta 1 argumento

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 

Con este código:

<? 
    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; 
      } 

    } 
?> 

También estoy usando esto en mi archivo de índice:

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

Debe publicar las líneas 5 y 6 en index.php. Ahí es donde está el error. – Chris

Respuesta

11

al ejecutarse lo hizo: $obj = new person(); en lugar de $obj = new person("joe");

+1

Pero, estoy usando $ tyler = new person ("Tyler"); – Phil

+0

$ tyler = nueva persona; $ tyler :: set_name ("Tyler"); ... elimina la construcción y prueba así. –

+6

En tu clase, haz la función __construct ($ persons_name = ""). – Babiker

2

Está llamando al constructor sin pasar un argumento. Tal vez usted está haciendo algo así como $p = new person(); en lugar de $p = new person("theirName");

+0

@Phil: Es al final de la respuesta de Brian: '$ p = new Person (" theirName ");' –

+0

He estado haciendo esto: $ tyler = new person ("Tyler"); – Phil

4
$persons_name = "" 

Conjunto así en el argumento. Pero eso no es solución. Puede eliminar construcciones, crear nuevas instancias y luego establecer el nombre. Si tuyo de alguna manera no funciona.

+0

+1 para explicar __construct(). __construct ($ nombre_personas = "") es correcto. – jhamPac

0

Parece: Si el nombre de la clase es el mismo que el nombre de la función, se da esta advertencia. Si nombra la función de manera diferente al nombre de la clase, parece estar bien. Debe suministrar argumentos solamente al llamar que no funciona en la creación de instancias de clases

0

Prueba este código

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

NULL inicializado dentro método de construcción.

Cuestiones relacionadas