Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Alex_bro en 19 Marzo 2009, 17:02 pm



Título: [PHP] Include dentro de una funcion
Publicado por: Alex_bro en 19 Marzo 2009, 17:02 pm
Buenas,
Cada dia se me presentan mas includes al principio de cada fichero... y queria hacer una funcion de Cargar() asignando en los parametros si usare una db o el motor de templates... y para ello necesitaria incluir los ficheros dentro de la funcion... pero no se puede... hay forma? o se les ocurre alguna otra idea?

Gracias!


Título: Re: [PHP] Include dentro de una funcion
Publicado por: дٳŦ٭ en 19 Marzo 2009, 17:50 pm
Si se puede, en tu función:

Código
  1. function cargarIncludes($archivos){
  2.    foreach ($archivos as $url) {
  3.         include($url);
  4.             }
  5. }
  6.  

Suerte


Título: Re: [PHP] Include dentro de una funcion
Publicado por: Alex_bro en 19 Marzo 2009, 17:56 pm
No pero si el problema es que el include solo se hace dentro de esa funcion, no tiene efectos a nivel global fuera de ella.

Gracias.


Título: Re: [PHP] Include dentro de una funcion
Publicado por: дٳŦ٭ en 19 Marzo 2009, 18:08 pm
Prueba esto:

Código
  1. function cargarIncludes($archivos){
  2.    foreach ($archivos as $url) {
  3.        eval(include($url));
  4.             }
  5. }


Título: Re: [PHP] Include dentro de una funcion
Publicado por: Alex_bro en 19 Marzo 2009, 18:28 pm
Nada, tampoco. De esa forma me ha tirado al principio un error de sintaxis, pero hojeando php.net lo solucione, pero tampoco se soluciona el incluir el archivo de forma global.
Alguna manera tiene que haber para esto tan simple digo yo... o hay forma mas logica de obtener el mismo resultado?

Gracias


Título: Re: [PHP] Include dentro de una funcion
Publicado por: дٳŦ٭ en 19 Marzo 2009, 18:41 pm
mmm pruebalo, a mi me funcionó al 100%:

Código
  1. <?php
  2. ini_set("display_errors", 1);
  3. function cargarIncludes($archivos){
  4.     foreach ($archivos as $url) {
  5.         include($url);
  6.           }
  7. }
  8. $archivos=array('a.php','b.php','c.php');
  9. cargarIncludes($archivos);
  10. print_r($archivos);
  11. ?>


Título: Re: [PHP] Include dentro de una funcion
Publicado por: Alex_bro en 19 Marzo 2009, 18:47 pm
La he usado y cargar cargan perfectamente, pero la idea es usar despues una variable que esté en alguno de esos archivos, o una clase para manejar la db, y entonces no funciona:
Código:
Notice: Undefined variable: casa in /blabla.../test.php on line 15

Tu codigo va genial para mostrar los resultados de esos includes, pero no para usar funciones y variables que esten en esos archivos, no se si me explique bien.

Gracias por tu apoyo :D


Título: Re: [PHP] Include dentro de una funcion
Publicado por: дٳŦ٭ en 19 Marzo 2009, 18:52 pm
aaaaaaaaaaaaaaa  ;D

Mira, hay algo que se llama "global" que sirve para usar $variables dentro y fuera que hayan sido declaradas de la función  ;)

Mira:

en a.php tengo:
Código
  1. <?php
  2. echo "a";
  3. $laprueba="afffffffffffffffff";
  4. ?>

y en shit.php
Código
  1. <?php
  2. ini_set("display_errors", 1);
  3. function cargarIncludes($archivos){
  4. global $laprueba;
  5.     foreach ($archivos as $url) {
  6.         include($url);
  7.           }
  8. }
  9. $archivos=array('a.php','b.php','c.php');
  10. cargarIncludes($archivos);
  11. print_r($archivos);
  12. echo $laprueba;
  13. ?>

Resultado:

aArray (
  • => a.php [1] => b.php [2] => c.php ) afffffffffffffffff

 :xD


Título: Re: [PHP] Include dentro de una funcion
Publicado por: Alex_bro en 19 Marzo 2009, 19:03 pm
No si eso de global ya lo uso, pero seria una lata declarar globales todas las variables que vaya a usar en esos includes no? jaja, de todas formas eso no seria problema, sino que no se puede declarar global una funcion, o si?
Lo de las variables era un ejemplo, pero lo que yo quiero es usar clases y funciones que estan en esos archivos que quiero incluir.

Siento ser tan pesado  :-[

Gracias!


Título: Re: [PHP] Include dentro de una funcion
Publicado por: дٳŦ٭ en 19 Marzo 2009, 19:09 pm
http://www.php.net/global

Si puedes hacerlas globales. Suerte