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

Cannot redeclare class xajaxRequestPlugin

Estas en el tema de Cannot redeclare class xajaxRequestPlugin en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenos dias. Tengo 3 clases en archivos diferentes: 1. MainController (Padre) 2. ClaseControllerHija1 3. ClaseControllerHija2 Ok, en la MainController incluyo otra clase que necesito, que ...
  #1 (permalink)  
Antiguo 11/03/2011, 10:42
 
Fecha de Ingreso: enero-2005
Mensajes: 122
Antigüedad: 19 años, 3 meses
Puntos: 2
Cannot redeclare class xajaxRequestPlugin

Buenos dias.

Tengo 3 clases en archivos diferentes:

1. MainController (Padre)
2. ClaseControllerHija1
3. ClaseControllerHija2

Ok, en la MainController incluyo otra clase que necesito, que es xajax.inc.

Todos los archivos los incluyo asi: require_once('...'), "tambien intente con include_once('...') y nada".

Tengo todo organizado por proyectos, cosa que siempre que creo un proyecto nuevo creo una clase llamada (en este caso) ClaseControllerHija1 y extiende a la MainController, hasta aqui todo bien.

El inconveniente que ahora tengo, es que en un proyecto cree unos métodos que me sirven para el otro, entonces intento incluir en el archivo que contiene la clase ClaseControllerHija2 en el archivo que contiene la ClaseControllerHija1 y me aparece que Cannot redeclare class xajaxRequestPlugin, entiendo que lo esta redeclarando porque tanto en ClaseControllerHija1 como en ClaseControllerHija2 estoy llamando al mismo archivo que contiene MainController que contiene la clase xajaxRequestPlugin y la necesito porque en ClaseControllerHija1 tengo los metodos que necesito trabajar en la ClaseControllerHija2.

Como hago para resolver este lio??.
Gracias.
  #2 (permalink)  
Antiguo 11/03/2011, 10:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cannot redeclare class xajaxRequestPlugin

incluye la librería de Xajax antes de tus otras librerías, ¿no se te ocurrió?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/03/2011, 11:09
 
Fecha de Ingreso: enero-2005
Mensajes: 122
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: Cannot redeclare class xajaxRequestPlugin

Hola, gracias por tu pronta respuesta, la libreria esta en el MainController y a esta clase la incluyen las otras dos, no te entiendo como incluirla antes de las otras...
Gracias
  #4 (permalink)  
Antiguo 11/03/2011, 11:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cannot redeclare class xajaxRequestPlugin

mira, todo proceso se dispara a partir de un script inicial... ¿cierto?

bueno... pues ahí es donde deberías cargar las dependencias si éstas van a ser usadas por varios componentes....
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 11/03/2011, 11:49
 
Fecha de Ingreso: enero-2005
Mensajes: 122
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: Cannot redeclare class xajaxRequestPlugin

OK, entiendo lo que me dices, si lo hago asi, entonces digamos que en mi proyecto anterior la libreria no la puse en el MainController sino que la puse en el script inicial que seria ClaseControllerHija1 ya que en ese momento ese script se convertiria en la inicial y todo seguiria funcionando normalmente.
Ahora para este proyecto necesito extender mi nueva clase ClaseControllerHija2 de ClaseControllerHija1 de igual manera redeclararia la libreria porque va a estar en los dos scripts, tu dirias, bueno pues no la incluyas en la nueva, podria ser pero si necesito otro script mas de otro proyecto, que tendria la libreria incluida, para incluirlo... ahi es donde esta el lio..
Tnks.
  #6 (permalink)  
Antiguo 11/03/2011, 13:00
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 20 años, 11 meses
Puntos: 60
Respuesta: Cannot redeclare class xajaxRequestPlugin

Si miras en los frameworks actuales, Desacoplados, usan require_once o bien un autoload, igual y te conviene usar autoload
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #7 (permalink)  
Antiguo 11/03/2011, 13:54
 
Fecha de Ingreso: enero-2005
Mensajes: 122
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: Cannot redeclare class xajaxRequestPlugin

Bueno, voy a colocar codigo de ejemplo:

Mi clase Principal
Archivo: MainController.php

Código PHP:
Class MainController {
    
        require_once(
"conexion.inc");
        require_once(
"xajax.inc.php");
    
        public function 
__construct(){
            
            
$this->init();
            
            
$this->ajax             = new xajax();
            
$this->smarty           = new Smarty;
            
$this->obj             = new Objets();
            
$this->respuestaAjax   = new xajaxResponse();
            
$this->validar         = new Validar();
            
$this->diseno         = new Diseno();
            
$this->ingreso         = new Auth();
            
$this->tools                 = new Herramientas();
            
$this->conexion         = new BaseDatos();
            

            
$this->setMemory();            
            
$this->accessControl();            
            
$this->ajaxEncode();            
            
$this->regFunctions();    
            
$this->ajaxLibrary();        
            
        }

                ....... 
Proyecto anterior:
Archivo: ordenesServicioController.php

Código PHP:
    require_once("../incluidos/MainController.php");
    require_once(
"ordenesServicioForm.php");
    require_once(
"ordenesServicioModel.php");
    require_once(
"../incluidos/PDF/dompdf_config.inc.php");


    class 
ordenesServicioController extends MainController
    
{

        const 
TPL          'ordenesServicioController.tpl';
        const 
PUBLIC_PATH  'http://rlg.roldanlogistica.com/bun/rologistica/documentos_clientes/ordenes_servicio/';
        const 
PRIVATE_PATH '/var/www/html/ordenes_servicio/';

        protected 
$_db;

        
        public function 
init(){

            
$this->ruta              $_SERVER['PHP_SELF'];
            
$this->memory            128;
            
$this->encode_ajax       'ISO-8859-1';
            
$this->debug_xajax       false;
            
$this->waitCursor        false;
            
$this->reg_functions     = array(

                
'mostrarServicio',
                
'getCliente',
                
'grabarConfiguracionCliente',
                
'grabarServicio',
                
'getTarifasExistentes',
                
'actualizarTarifas',
                
'prefactura',
                
'mostrarContenidoCliente',
                
'traerDoRoldan',
                
'setSubCliente',
                
'formateaClienteSia',
                
'clearFile',
                
'getConsecutivoOrdenes',
                
'getInfoOrden',
                
'actualizarArchivo',
                
'actualizarInfo',
                
'crearNuevaOrden',
                
'getInfoCli',
                
'printPdf',
                
'printP',
                
'getOrdenes',
                
'getOrdenExistente',
                
'anularOrdenes',
                
'confirmarOrden',
                
'mostrarOpcionConsulta',
                
'consultaPorFechaDeOrden',
                
'mostrarTipoCarga',
                
'addContenedor'

            
);

            
$this->_db = new ordenesServicioModel();

        }

        ........ 
Nuevo proyecto
Archivo: SopIntegralController.php

Código PHP:
    require_once("../incluidos/MainController.php");
    require_once(
"SopIntegralForm.php");
    require_once(
"SopIntegralModel.php");


    class 
SopIntegralController extends MainController
    
{

        const 
TPL 'SopIntegralController.tpl';

        public function 
init(){

            
$this->ruta              $_SERVER['PHP_SELF'];
            
$this->memory            128;
            
$this->encode_ajax       'ISO-8859-1';
            
$this->debug_xajax       true;
            
$this->waitCursor        false;
            
$this->reg_functions     = array('holaMundo');

        }


        public function 
getOrden(){

            include_once(
"ordenesServicioController.php");

            
$orden = new ordenesServicioController(); // <-- Aqui es donde se me genera el error, dice Cannot redeclare class xajaxRequestPlugin in .....

        

Eso es lo que tengo, gracias de antemano.

Última edición por Brahyam; 11/03/2011 a las 14:33
  #8 (permalink)  
Antiguo 11/03/2011, 14:48
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Cannot redeclare class xajaxRequestPlugin

estas haciendo require_once("../incluidos/MainController.php"); en dos archivos...
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #9 (permalink)  
Antiguo 11/03/2011, 15:19
 
Fecha de Ingreso: enero-2005
Mensajes: 122
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: Cannot redeclare class xajaxRequestPlugin

Hola, claro que hago el include en los dos archivos ya que son proyectos diferentes, el uno no depende del otro, almenos hasta ayer, hoy que necesito utilizar los mismos metodos de la clase ordenesServicioController en SopIntegralController es donde no se que hacer, si le quito el include del MainControler a uno lo dejo sin funcionar... ideas??
  #10 (permalink)  
Antiguo 11/03/2011, 17:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cannot redeclare class xajaxRequestPlugin

a ver, cuando yo hablaba de un script principal no hablaba de las clases que usas... por lo general un proyecto web debe tener un index.php o algún otro script con el cual iniciamos la ejecución de nuestro sistema, y justo ahí es donde deberías hacer la mayoría de los includes compartidos... ¿ahora si se entiende?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: class
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 09:51.