Foros del Web » Programando para Internet » PHP »

Missing argument 1 for Controller::__construct()

Estas en el tema de Missing argument 1 for Controller::__construct() en el foro de PHP en Foros del Web. El error deriva de la siguiente linea Código PHP: $controlador  = new  $controlador ;  Cita: Warning: Missing argument 1 for Controller::__construct(), called in /opt/lampp/htdocs/MicroMVC/index.php on line ...
  #1 (permalink)  
Antiguo 14/06/2014, 09:25
 
Fecha de Ingreso: enero-2008
Mensajes: 581
Antigüedad: 16 años, 11 meses
Puntos: 9
Missing argument 1 for Controller::__construct()

El error deriva de la siguiente linea
Código PHP:
$controlador = new $controlador
Cita:
Warning: Missing argument 1 for Controller::__construct(), called in /opt/lampp/htdocs/MicroMVC/index.php on line 20 and defined in /opt/lampp/htdocs/MicroMVC/index.php on line 25

Warning: Missing argument 2 for Controller::__construct(), called in /opt/lampp/htdocs/MicroMVC/index.php on line 20 and defined in /opt/lampp/htdocs/MicroMVC/index.php on line 25

Warning: Missing argument 3 for Controller::__construct(), called in /opt/lampp/htdocs/MicroMVC/index.php on line 20 and defined in /opt/lampp/htdocs/MicroMVC/index.php on line 25
/index.php
Código PHP:
<?php
    ini_set
('display_errors'1);
    
header('Content-Type: text/html; charset=UTF-8');

    
define('DS'DIRECTORY_SEPARATOR);
    
define('ROOT'realpath(dirname(__FILE__)).DS);
    
define('APP_PATH'ROOT.'aplicacion'.DS);

    
$argumentos = isset($_GET['url']) ? explode('/'$_GET['url']) : array() ;
    
$controlador = ($controlador strtolower(array_shift($argumentos))) ? $controlador 'index' ;
    
$metodo = ($metodo strtolower(array_shift($argumentos))) ? $metodo 'index' 


    
$controlador $controlador.'Controlador';
    
$rutaControlador ROOT.'controladores'.DS.$controlador.'.php';

    if (
file_exists($rutaControlador)) {
        require_once 
$rutaControlador;

        
$controlador = new $controlador;
        
$metodo method_exists($controlador$metodo) ? $metodo 'index';
    }

    class 
Controller {
        public function 
__construct($controlador$metodo$argumentos) {
            
//echo $controlador;
            //echo $metodo;
            //foreach ($argumentos as $argumento) echo $argumento;
        
}
    }
    new 
Controller($controlador$metodo$argumentos);

?>
/controladores/indexControlador.php
Código PHP:
<?php
    
class indexControlador extends Controller {
        public function 
index() {
            echo 
'Método index';
        }
        public function 
ver() {
            echo 
'Método Ver';
        }
    }
?>
  #2 (permalink)  
Antiguo 14/06/2014, 10:57
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Missing argument 1 for Controller::__construct()

Tu problema es por que el constructor de tu controlador requiere que le pases parámetros. Para solucionarlo usa parámetros opcionales en el constructor; ver el manual:http://www.php.net/manual/es/functions.arguments.php
en la sección Valores de argumentos predeterminados
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: html, missing
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:51.