Buenas!!!
Estoy teniendo problemas con los require_once según desde donde llame a las clases. Por ejemplo:
Este el sistema de archivos que tengo:
Código:
miapp
-dao
UsuarioDAO.php
MySQLDB.php
-dto
Usuario.php
-includes
Login.php
config.php
-public
index.php
-admin
login.php
desde el archivo miapp/public/index.php hago lo siguiente y funciona:
Código PHP:
<?php require_once '../dao/UsuarioDAO.php'; ?>
<?php require_once '../dto/Usuario.php'; ?>
$usuarios = UsuarioDAO::obtenerUsuarios();
pero si hago los require_once desde miapp/public/admin/login.php no me funciona:
Código PHP:
<?php require_once '../../dao/UsuarioDAO.php'; ?>
<?php require_once '../../dto/Usuario.php'; ?>
$usuario = UsuarioDAO::obtenerUsuario($user, $pass);
Este es el error:
Warning: require_once(../includes/config.php) [function.require-once]: failed to open stream: No such file or directory in C:\xampp\htdocs\miapp\dao\MySQLDB.php on line 3
Fatal error: require_once() [function.require]: Failed opening required '../includes/config.php' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\miapp\dao\MySQLDB.php on line 3
Y este el código de cada clase (sólo los require_once):
miapp/dao/UsuarioDAO.php
Código PHP:
require_once 'MySQLDB.php';
require_once '../dto/Usuario.php';
miapp/dao/MySQLDB.php
Código PHP:
require_once '../includes/config.php'; //Configuración de la Base de datos
Parece ser que depende de donde se llamen a las clases funciona de manera distinta no?. Sabéis una forma buena de resolver esto? Y si me podéis explicar el motivo sería perfecto!!
Tengo que decir que antes de escribir esto he estado buscando en el foro para encontrar una solución y en concreto he visto estos temas que comenta GatorV y pateketrueke entre otros:
http://www.forosdelweb.com/f18/probl...e_once-654283/ http://www.forosdelweb.com/f18/probl...ctorio-774798/ http://www.forosdelweb.com/f18/error...e_once-655571/
Pero no me termina de quedar muy claro. Ya que también he visto otra solución que es poner en un archivo de configuración estas constantes:
Código PHP:
define('ROOT', 'C:\xampp\htdocs');
define('APP_NAME', 'miapp');
define('APP', ROOT . DIRECTORY_SEPARATOR . APP_NAME );
Aunque esta opción me gusta, que tendría que importar este archivo en cada uno de los demás archivos no? Y utilizarlas así:
Código PHP:
require_once '../../includes/config.php';
require_once APP . DIRECTORY_SEPARATOR . 'Usuario.php';
Pero tendría el mismo problema con el archivo config.php no? Estoy hecho un lio!!
Espero que me puedan ayudar y aclarar mis dudas!!!
Muchas Gracias de antemano y Saludos!