Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Constructor en la clase IndexController

Estas en el tema de Constructor en la clase IndexController en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenos dias, tengo un inconveniente cuando intento crear un constructor para la clase IndexController me sale el siguiente error: Fatal error: Declaration of IndexController::__construct() must ...
  #1 (permalink)  
Antiguo 09/03/2010, 07:41
 
Fecha de Ingreso: enero-2005
Mensajes: 122
Antigüedad: 19 años, 3 meses
Puntos: 2
Constructor en la clase IndexController

Buenos dias, tengo un inconveniente cuando intento crear un constructor para la clase IndexController me sale el siguiente error:

Fatal error: Declaration of IndexController::__construct() must be compatible with that of Zend_Controller_Action_Interface::__construct()

el constructor lo tengo asi:

Código PHP:
public function __construct() {
        
        
parent::__construct(null,null,null);
        

Que podria hacer para poder definir mi constructor en el IndexController?

Gracias.
  #2 (permalink)  
Antiguo 09/03/2010, 08:02
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Constructor en la clase IndexController

null null null ?
no tengo mucha experiencia en poo.. pero no deberian ser $variables en los parametros ?
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 09/03/2010, 08:10
 
Fecha de Ingreso: enero-2005
Mensajes: 122
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: Constructor en la clase IndexController

Los parametros los pongo como nulos para que no me genere error ya que no se que parametros recibe el constructor de la clase padre, tambien podrian ser true,true,true pero tampoco sirve, debe de haber alguna manera de poder implementar el constructor de mi clase.

Gracias.
  #4 (permalink)  
Antiguo 09/03/2010, 09:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Constructor en la clase IndexController

Es un problema más generico de POO, que nada, si tu implementas una interface, es OBLIGATORIO que los métodos que expone la interfaz los uses tal cual, esa es la razón de las interfaces, es un contrato.

Mira el siguiente ejemplo:
Código PHP:
Ver original
  1. interface Encendible
  2. {
  3.         public function enciende($objeto);
  4. }
  5.  
  6. class Cerillo implements Encendible
  7. {
  8.        public function enciende($objeto)
  9.        {
  10.                 $objeto->enciende();
  11.        }
  12. }
  13.  
  14. class Foco implements Encendible
  15. {
  16.        public function enciende() // Fatal error Declaration of Foco::enciende() must be compatible with that of Encendible::enciende()
  17.        {
  18.                echo "prendi";
  19.        }
  20. }

Para remediar tu problema, al declarar el constructor, este tiene que aceptar los mismos argumentos y en el mismo orden que el constructor de la interfaz.

Saludos.
  #5 (permalink)  
Antiguo 09/03/2010, 14:53
 
Fecha de Ingreso: enero-2005
Mensajes: 122
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: Constructor en la clase IndexController

Ok, muchas gracias lo solucione registrando todo lo que necesito en el public function init(){} de mi IndexController, lo unico que note es que cuando inicializo un objeto y lo quiero tomar en algun metodo, este tiene que ser Action, miFunctionAction(), sino no lo puedo trabajar.

Gracias.
  #6 (permalink)  
Antiguo 15/03/2010, 18:19
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: Constructor en la clase IndexController

Cita:
Iniciado por Brahyam Ver Mensaje
Ok, muchas gracias lo solucione registrando todo lo que necesito en el public function init(){} de mi IndexController, lo unico que note es que cuando inicializo un objeto y lo quiero tomar en algun metodo, este tiene que ser Action, miFunctionAction(), sino no lo puedo trabajar.

Gracias.
Que tal Brahyam

Exactamente, ambas cosas que comentas son parte de Zend Framework, por lo que te sugiero que leas el manual y no sigas haciendo "prueba y error", ya que perderás mucho tiempo. Por ejemplo:
  • En tus Controller debes usar el método init() para no pisar el constructor que tiene por defecto la clase Padre
  • El resto de los métodos, si son "acciones" del controller, si o si deben terminar siempre en un Action, por lo de "convención vs configuración", así redirige luego a la vista correspondiente con el mismo nombre que el método de tipo "action".
Saludos!
__________________
Blog phpsenior.com Cursos a Distancia surforce.com

Etiquetas: clase, constructor
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 03:50.