Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/12/2010, 11:37
Avatar de huspy
huspy
 
Fecha de Ingreso: diciembre-2008
Ubicación: Málaga, España
Mensajes: 120
Antigüedad: 15 años, 4 meses
Puntos: 2
Pregunta Como funciona las rutas con require_once???

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!
__________________
"Lo escuché y lo olvidé, lo vi y lo entendí, lo hice y lo aprendí." (Confucio)

Última edición por huspy; 18/12/2010 a las 11:40 Razón: Faltaba texto