Foros del Web » Programando para Internet » PHP »

alternativa a include ?

Estas en el tema de alternativa a include ? en el foro de PHP en Foros del Web. Que tal amigos, existe una funcion que basta con poner el nombre del archivo este reconozca que es lo que quieres cargar... veamos un ejemplo.... ...
  #1 (permalink)  
Antiguo 01/06/2010, 13:02
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 8 meses
Puntos: 31
alternativa a include ?

Que tal amigos, existe una funcion que basta con poner el nombre del archivo este reconozca que es lo que quieres cargar... veamos un ejemplo....

Ruta de mi clase
archivo/class/usuario.php

Archivo donde llamo la clase USUARIO
index.php/archivo/usuario/php
El index esta llamando a ese archivo

Hasta ahi bien, median include,require el archivo usuario.php es cargado correctamente. Pero, sucede esto....

Ruta de mi clase
archivo/class/usuario.php
La clase usuario carga al archivo DB

Ruta de mi DB que sera incluida en usuario.php
../db/mysql.php

Archivo donde llamo la clase USUARIO
index.php/archivo/usuario/php
El index no reconoce el archivo mysql.php

Alguien tiene una solucion ?, y porfa no me digan pon todo en la misma ruta, o llama a la db desde index.php
  #2 (permalink)  
Antiguo 01/06/2010, 13:06
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: alternativa a include ?

Usa una variable para almacenar la ruta principal del sitio:

Código PHP:
Ver original
  1. $ruta = '/var/www/sitio.com/public_html';
  2.  
  3. include "$ruta/archivo/class/usuario.php";
  4. include "$ruta/db/mysql.php";
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 01/06/2010, 13:18
 
Fecha de Ingreso: mayo-2010
Mensajes: 39
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: alternativa a include ?

require_once esap :D
  #4 (permalink)  
Antiguo 01/06/2010, 13:26
 
Fecha de Ingreso: febrero-2010
Mensajes: 39
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: alternativa a include ?

con require_once busca por si solo el archivo que quieres incluir? o_o que pasa si hay 2 de mismo nombre en distintas carpetas?

edit: notese ironia

Última edición por Dunnow; 01/06/2010 a las 13:34
  #5 (permalink)  
Antiguo 01/06/2010, 13:27
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 9 meses
Puntos: 10
Respuesta: alternativa a include ?

Cuando un archivo es uncluido dentro de otro los vinculos de este con algun otro, cambian (se vuelven obsoletos), si el archivo que lo carga se encuentra en un directorio distintio. ...Mas creo que lo sabes.

Última edición por wiwi74; 01/06/2010 a las 13:32
  #6 (permalink)  
Antiguo 01/06/2010, 13:32
 
Fecha de Ingreso: febrero-2010
Mensajes: 39
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: alternativa a include ?

el thread esta resuelto desde el post numero 2, dejad de meter leña donde no debe haber fuego
  #7 (permalink)  
Antiguo 01/06/2010, 13:49
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 8 meses
Puntos: 31
Respuesta: alternativa a include ?

cual es la funcion que imprime la ruta especifica ?? voy a crear una funcion que se encarge de hacer todo esto
  #8 (permalink)  
Antiguo 01/06/2010, 13:49
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 9 meses
Puntos: 10
Respuesta: alternativa a include ?

La clase usuario carga al archivo DB:

Tu db:
../db/mysql.php

Para ese archivo la ruta a mysql.php seria asi (podrias probar):
../../../db/mysql.php

Pero una vez incluido en index php, asi:
../db/mysql.php


Prueba poner las rutas relativas reales antes de inlude() y despues, a ver que pasa.

Segun el caso un sub-archivo incluye a otro antes de ser incluido en el principal, ...o al revés.

Igual sigo medio perdido...

Última edición por wiwi74; 01/06/2010 a las 13:57
  #9 (permalink)  
Antiguo 01/06/2010, 14:19
 
Fecha de Ingreso: febrero-2010
Mensajes: 39
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: alternativa a include ?

a ver, la funcion require, require_one y include, include_once lo que hacen es cojer el CODIGO de otro archivo y PEGARLO en donde tu pones "include" o "require"

entonces, las rutas de otros archivos debes tenerlas en cuenta desde al archivo "padre" y no desde el "incluido"

imagina la situacion

carpeta web (contiene todo lo siguiente)
-index
-archivo_inlcuido1
carpeta2
-archivo_incluido2

en index haces un include de archivo_incluido1 por lo que si este archivo tiene una ruta hacia archivo_incluido2 esta sera "hacia delante" siendo carpeta2/archivo_incluido2.

despues de hacer 4 tonterias vuelves a hacer otro include en el archivo index pero esta vez incluyes el archivo_incluido2, si este archivo tiene una ruta hacia archivo_inlcuido1 la ruta quedara ./archivo_incluido1

porque? el contenido de archivo_incluido2 pasara a estar en index y desde index vas hasta archivo_incluido1 en la carpeta actual.

Cual es el punto de la explicacion? si quisieras hacer un link desde archivo_incluido2 a archivo_incluido1 sin haber echo el include en el index el link de archivo_incluido2 a archivo _incluido1 deberia ser ../archivo_incluido1


espero que asi te quede algo mas claro como van las rutas, creo haberlo explicado suficientemente bien
  #10 (permalink)  
Antiguo 01/06/2010, 14:39
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 8 meses
Puntos: 31
Respuesta: alternativa a include ?

mas claro que el agua, hice una funcion para pasar la ruta a partir de la carpeta actual...



Código PHP:
Ver original
  1. private static $path = 'sympla';
  2. public function cargarFichero($path='')
  3.  
  4.     {
  5.         $path = $_SERVER['DOCUMENT_ROOT']."/".self::$path."/$path";
  6.         include_once($path);
  7.         //debug
  8.         print $path;
  9.     }

Primer se define la carpeta padre, y luego pasas los parametros por la funcion batsante sencillo pero util para agilizar procesos
  #11 (permalink)  
Antiguo 01/06/2010, 14:45
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: alternativa a include ?

Excelente, solo que vas a tener dos problemas:

1- Creas una funcion completamente innecesaria, porque es lo mismo crear una variable que te almacene la ruta a la raiz de tu sitio y agregarla directamente en tus directivas include. Esto sin contar que tendras que editar todos los archivos para realizar la llamada a la funcion.

2- Que va a pasar con las variables? bajo que ambitos podran estar disponibles? Seguramente tendras que hacer ediciones adicionales para compartir variables entre funciones.
__________________
- León, Guanajuato
- GV-Foto
  #12 (permalink)  
Antiguo 01/06/2010, 14:50
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 8 meses
Puntos: 31
Respuesta: alternativa a include ?

bah no te entendi...... en relaidad etsa dentro de una clase, solo se necesita declarar el nobmre de la carpeta principal del proyecto

Código PHP:
Ver original
  1. private static $path = 'sympla';

Luego de eso, la funcion se encarga del resto en ves de pasar la ruta actual en cualquier proyecto que estes, solo mandas la ruta a partir de la carpeta padre... osea si la carpeta padre es carpetaA ... solo pasarias a la funcion asi

Código PHP:
Ver original
  1. $obj->cargarFichero("contenidoA/home.html")

Y si, mi funcion va a remplazar al include_once, ya que basicamente lo que estoy haciendo es un framework de uso personal para agilizar mis tareas.

Espero respuesta
  #13 (permalink)  
Antiguo 01/06/2010, 14:56
 
Fecha de Ingreso: febrero-2010
Mensajes: 39
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: alternativa a include ?

Lo que yo no entiendo es como eres capaz de usar / entender la orientacion a objetos y no haber echo lo que ha dicho Triby desde buen principcio

o_o
  #14 (permalink)  
Antiguo 01/06/2010, 14:58
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: alternativa a include ?

Prueba esto:

Código PHP:
Ver original
  1. $variable = 'algo';
  2.  
  3. // Llama a la funcion para incluir tu clase de base de datos:
  4. $sympla->cargarFichero('db/mysql.php');
  5.  
  6. // Suponiendo que en mysql.php estableces la conexion y seleccionas la base de datos con:
  7. // $db = new Mysql(bla bla bla);
  8.  
  9. // Ahora intenta tener acceso a $db:
  10. $db->query(bla bla bla);
  11.  
  12. // O bien, dentro de mysql.php incluye
  13. echo $variable;
__________________
- León, Guanajuato
- GV-Foto
  #15 (permalink)  
Antiguo 01/06/2010, 15:10
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 8 meses
Puntos: 31
Respuesta: alternativa a include ?

no te entiendo bien chico, pero todos mis clases extienden de la principal la cual se encarga de conectarse a mysql(estoy a punto de cambiarla por la clase abstract PDO)... es en cualquier lugar yo puedo usar mi funcion sin tener que volvera incluir a sympla.class.php

Código PHP:
Ver original
  1. <?php
  2. class Sympla
  3. {
  4.     ####################################################################################
  5.     ##Sympla es un framework desarollado por Eduardo Rodriguez Patiño, este fue creado##
  6.     ##para facilitar las tareas en la programacion de paginas dinamicas, actualmente  ##
  7.     ##esta diseñado para ser trabajado usando POO(OOP), e implementara MVC.           ##
  8.     ##                                                                                ##
  9.     ##                 NO RECOMENDADO PARA APLICACIONES GRANDES                       ##
  10.     ##                                                                                ##
  11.     ## INICIADO: SABADO 29 DE MAYO DEL 2010                                           ##
  12.     ## ULTIMA ACTUALIZACION: LUNES 31 DE MAYO DEL 2010                                ##
  13.     ##                                                                                ##
  14.     ## CORREO ELECTRONICO: [email protected]                                        ##
  15.     ####################################################################################
  16.  
  17.     //Datos de Sympla :: NO DEBEN SER MODIFICADOS
  18.     private static $nombre = 'Sympla';
  19.     private static $version = '1.0.0.0';
  20.     private static $estado = 'beta';
  21.     private static $autor = 'HiToGoRoShi';
  22.    
  23.     //Ruta actual del proyecto :: DEBE COLOCAR LA RUTA ORIGINAL DEL PROYECTO
  24.     private static $path = 'sympla';
  25.    
  26.     //Conexion a MYSQL
  27.     private $server = 'localhost';
  28.     private $database = 'isilbook';
  29.     private $username = 'root';
  30.     private $password = '';
  31.  
  32.     public static function versionSimpla()
  33.     {
  34.         $simpla = self::$nombre.": ".self::$version." by ".self::$autor;
  35.         return $simpla;
  36.     }
  37.    
  38.     public function verificarMysql()
  39.     {      
  40.         //Cargar los mensajes para el log
  41.         require_once("log/logs.messages.php");
  42.         //Verificando los datos de acceso
  43.         $cn = @mysql_connect($this->server,$this->username,$this->password);
  44.         $db = @mysql_select_db($this->database,$cn);
  45.        
  46.         if($cn && $db)
  47.         {
  48.             $reporte = "<strong>".self::$nombre.":</strong> $mysql[0]";
  49.             return $reporte;
  50.         }else
  51.         {
  52.             //Guardar en el log nuestro error
  53.             $this->logError($reporte[1]);
  54.             $reporte = "<strong>".self::$nombre.":</strong> $mysql[1]".__FILE__;
  55.             return $reporte;
  56.         }
  57.     }
  58.    
  59.     public function conexionMysql()
  60.     {      
  61.         $cn = @mysql_connect($this->server,$this->username,$this->password);
  62.         $db = @mysql_select_db($this->database,$cn);   
  63.        
  64.         if($cn && $db)
  65.         {
  66.             return $cn;
  67.         }else
  68.         {
  69.             print $this->verificarMysql();
  70.             die();
  71.         }
  72.     }
  73.    
  74.     public function mostrarTiempo($tipo)
  75.     {
  76.         switch($tipo)
  77.         {
  78.         case 0:
  79.             //Devolver la hora
  80.             return date('h:i:s A');
  81.             break;
  82.         case 1:
  83.             //Retornar la fecha en español con sus nombres
  84.             $dia = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado");
  85.             $mes = array("enero","febrero","marzo","abril","mayo","junio","julio","agosto","setiembre","octubre","noviembre","diciembre");
  86.        
  87.             $fecha = $dia[date('w')].", ".date('d') ." de ".$mes[date('n')-1]. " del ".date('Y');          
  88.             return $fecha;
  89.             break;
  90.         case 2:
  91.             //Retornar la fecha en español con sus nombres y la hora actual
  92.             $dia = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado");
  93.             $mes = array("enero","febrero","marzo","abril","mayo","junio","julio","agosto","setiembre","octubre","noviembre","diciembre");
  94.        
  95.             $fecha = $dia[date('w')].", ".date('d') ." de ".$mes[date('n')-1]. " del ".date('Y')."  ".date('h:i:s A');         
  96.             return $fecha;
  97.             break;
  98.         case 3:
  99.             return date('d/m/y');
  100.             break;
  101.         case 4:
  102.             return date('d/m/y h:i:s A');
  103.             break;
  104.         default:
  105.             //Cargar los mensajes para el log
  106.             require_once("log/logs.messages.php");
  107.             $reporte = "<strong>".self::$nombre.":</strong> $tiempo[0] <i>".__FUNCTION__."()</i>";
  108.             return $reporte;
  109.             break;
  110.         }
  111.     }
  112.    
  113.     public function logError($error)
  114.     {
  115.         $log = fopen('logs/error_log.txt','a+');
  116.         fwrite($log,"#[".date('D M Y h:i:sA')."]: $error \r\n");
  117.         fclose($log);
  118.     }
  119.    
  120.     public function cargarTiny($tipo)
  121.     {
  122.         require_once("addons/tinymce/tinymce.php");
  123.        
  124.         if($tipo == 0)
  125.         {
  126.             return $modo[0];
  127.         }
  128.         if($tipo == 1)
  129.         {
  130.             return $modo[1];
  131.         }else
  132.         {
  133.             //Cargar los mensajes para el log
  134.             require_once("log/logs.messages.php");
  135.             $reporte = "<strong>".self::$nombre.":</strong> $tiny[0] <i>".__FUNCTION__."()</i>";
  136.             return $reporte;
  137.         }
  138.     }
  139.    
  140.     public function cargarFichero($path='')
  141.     {
  142.         $path = $_SERVER['DOCUMENT_ROOT']."/".self::$path."/$path";
  143.         include_once($path);
  144.         //debug
  145.         print $path;
  146.     }
  147.    
  148.     //Metodos setters
  149.     public function getPath()
  150.     {
  151.         return  self::$path;
  152.     }  
  153.     public function getNombre()
  154.     {
  155.         return  self::$nombre;
  156.     }
  157.     public function getVersion()
  158.     {
  159.         return  self::$version;
  160.     }
  161.     public function getEstado()
  162.     {
  163.         return  self::$estado;
  164.     }
  165.     public function getAutor()
  166.     {
  167.         return  self::$autor;
  168.     }
  169. }
  170. ?>

Haber explicame bien porfa, que no entnedi bien xDD espero que no me tomes como pesado, explicame bien cual es tu conclusion, porque justamente yo quiero evitar estar declarando variables, o meter mucho codigo php en las paginas del lado visual...
  #16 (permalink)  
Antiguo 01/06/2010, 15:20
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: alternativa a include ?

Vaya, hombre, si ya descubriste que lo optimo es crear / extender clases y funciones para todo, genial... y si eso te hace feliz... tanto mejor, "porque justamente quieres evitar estar declarando variables" (sic).

Código PHP:
Ver original
  1. case 1:
  2.             //Retornar la fecha en español con sus nombres
  3.             $dia = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado");
  4.             $mes = array("enero","febrero","marzo","abril","mayo","junio","julio","agosto","setiembre","octubre","noviembre","diciembre");
  5.      
  6.             $fecha = $dia[date('w')].", ".date('d') ." de ".$mes[date('n')-1]. " del ".date('Y');          
  7.             return $fecha;
  8.             break;
  9.         case 2:
  10.             //Retornar la fecha en español con sus nombres y la hora actual
  11.             $dia = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado");
  12.             $mes = array("enero","febrero","marzo","abril","mayo","junio","julio","agosto","setiembre","octubre","noviembre","diciembre");

Edito:
- No seria mejor public $dia = array(bla bla bla); como parte de la clase y no de la funcion?
- Supongo que crearas otra funcion para desplegar una fecha que no sea la actual.
- Por ultimo, tambien podrias hacer public $ruta = '/www/sitio.com/public_html'; y cada que incluyas un archivo include "{$this->ruta}/archivo.php";
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 01/06/2010 a las 15:27
  #17 (permalink)  
Antiguo 01/06/2010, 15:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: alternativa a include ?

...santas redundancias batman!!

el santo grial de las constantes...
Código PHP:
include PATH.'/foo/bar.php'
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #18 (permalink)  
Antiguo 01/06/2010, 15:34
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 10 meses
Puntos: 81
Respuesta: alternativa a include ?

Y que pasa con PEAR ???

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!

Etiquetas: include
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 11:40.