![]() |
¿Redeclarar un clase? Hola :D!!! Descripción base de lo que estoy haciendo - Estoy diseñando un prototipo de CMS en donde la mayoria de la configuración se tome de una BD. y pues tengo una serie de archivos dónde se encuentra en detalle cada cosa. Problema - Tengo una clase dónde se cargan las secciones de la página, hasta el momento todo ha funcado bien, ahora que necesito meterle el menu izquierdo (El cual sacará las opciones de la BD con su respectiva URL) se me presenta el problema de que tengo que hacer uso de la clase "conex", la cual conecta y obtiene los querys para la consulta, pero cuándo hago esto me sale el siguiente error. Fatal error: Cannot redeclare class conex in D:\AppServ\www\ricclub2\class\conex.php on line 11. He intentado hacer varias cosas, pero las unicas soluciones que se me ocurren solo harián mi código muy extenso. No siendo más agradezco sus comentarios o ideas ;). Greetings to all and happy BandWidth. Editado 5 minutos más tarde Bueno, mirando otros POST y consultando la documentación de PHP encontre que al momento de hacer la inclusión de tus archivos dentro de una clase, usando include_once solucionas este inconveniente. |
Respuesta: ¿Redeclarar un clase? mmm.... mira, si ya existe la clase... es por eso el error, no puedes declararla de nuevo!!! ahora... si ya existe ¿porque no la reutilizas??? Código PHP: |
Respuesta: ¿Redeclarar un clase? Lo que pasaba era que tenia una clase Código: /**** package.php ****/ |
Respuesta: ¿Redeclarar un clase? mmm... mas que inconveniente, error.... mas que solución, desviación... digo, si tan solo necesitas la clase conex a través de varios script... cárgalo al inicio del index (o algo así) !!! demás, si ya existe la clase conex en el mismo script ¿para que la incluyes?? según yo, tan solo deberías carga una ves... al inicio del script tu clase conex en lugar de "usar soluciones temporales" |
Respuesta: ¿Redeclarar un clase? Tema trasladado a PHP Orientado a Objetos. |
Respuesta: ¿Redeclarar un clase? Cita:
Es importante que cada clase sea independiente del contexto que define index.php |
Respuesta: ¿Redeclarar un clase? Código PHP: |
Respuesta: ¿Redeclarar un clase? Cita:
|
Respuesta: ¿Redeclarar un clase? Cita:
digamos que clase A esta definida en el fichero CA.class.php y que clase B siendo una derivada de a requiere el fichero en donde esta declarada la clase A Código PHP: Código PHP: Código PHP: Todavia vamos bien , asi que no hay problema hasta ahora Ahora digamos que hay otro script que requiere un objeto de la clase B y C al mismo tiempo Código PHP: o osea que en algun momento de ejecucion de ese script va a dar un error dde redefinicion de clases. Encapsulando la clase definiendo una constante si ya fue instanciada una vez evita ese error. Código PHP: Código: #ifndef A_H_ |
Respuesta: ¿Redeclarar un clase? O mejor usar require_once y te evitas ese problema :-) Saludos. |
Respuesta: ¿Redeclarar un clase? Germán, deberás disculparme, pero esto está mal resuelto. Como reglas generales para POO bajo PHP
Por lo tanto el ejemplo debería ser: Código PHP: Cita:
¿Se entiende por qué? |
Respuesta: ¿Redeclarar un clase? Bueno, pero muchachos lo que pasa es lo siguiente. 1. Talvez no conozco mucho de POO porque hasta ahora estoy comenzando a cambiar todos mis codigos a PHP OO., por lo tanto aun tengo muchas dudas. 2. EL problema que tengo es que en cada método que uso debo incluir nuevamente el fichero que contiene la clase de conexión a la BD ya que no se donde mas pueda definirla. a menos que este por fuera de todos los metodos y cada vez que valla a realizar alguna operación o invocar un metodo acceda a esa variable definida anteriormente. 3. No siendo más agradezco todos sus comentarios ya que aclararón muchas dudas. 4. Me gustaria saber entonces que solución es más limpia al momento de realizar lo que estoy haciendo. En cada método que necesite acceder a la BD llame al fichero de la clase y la instancie para invocar los métodos correspondientes. Gracias |
Respuesta: ¿Redeclarar un clase? Hola dmks, La forma más limpia es usar require_once para solamente incluir la clase una vez, esto en conjunto con __autoload en dado caso o SPL te puede beneficiar al cargar tus clases. Saludos :adios: |
Respuesta: ¿Redeclarar un clase? No tiene nada de malo que la clase "x" requiera de la clase "DB" porque necesita una conexión a la base de datos, tampoco que haga un new en cada método que así lo necesites. Debes ver qué relación de diseño se aplica según las relaciones de clases, no lo hagas de forma mecánica: herencia, asociación, dependencia, etc. |
| La zona horaria es GMT -6. Ahora son las 21:50. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.