inclusione files

salve gente,

sapete se esiste una  funzione che mi restituisca il nome del file che ne ha incluso un'altro?

cioè:

file uno:

<?
include('file2.php');
?>

file due:

<?
include('file3.php');
?>

ora, nel file file3.php avrei bisogno di sapere che file lo ha incluso, cioè file2.php e non file1.php come mi direbbe $_SERVER['PHP_SELF']

grazie in anticipo per le eventuali risposte :bye:

inviato 10 anni fa
Xscratch
X 0 X

Non so se sia possibile fare quello che vuoi...

Puoi fare una cosa non troppo dinamica, ossia:

$pagina = "pagina_che_include.php";
include("pagina2.php");

E nel file incluso (pagina2.php) ti ritrovi la pagina che ha incluso pagina2.php in $pagina

Non so se ti possa andare bene, ma farlo come chiedevi tu non so se sia possibile...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

non è proprio quello che avevo in mente ma, come hai detto tu, forse non c'è altra maniera....

quindi:

file1.php

$page = __FILE__;
include("file2.php");

file2.php

$parentPage = $page;
$page = __FILE__;
include("file3.php");

file3.php

$parentPage = $page;
$pagina = __FILE__;

class myClass {

}

 :bye:

...grazie cmq per l'aiuto... O0

risposto 10 anni fa
Xscratch
X 0 X

pacco!

purtroppo mi sono accorto che non può funzionare, infatti se in un file si includono più file:

file1.php

<?
$page = __FILE__;
include("file2.1.php");
include("file2.2.php");
include("file2.3.php");
?>

secondo il file file2.3.php la pagina che l'ha inclusa è file2.2.php

 :(

risposto 10 anni fa
Xscratch
X 0 X

Si potrebbe procedere in questo modo:

Il file principale:

<?php

Xinclude('file1.php');
Xinclude('file2.php');
Xinclude('file3.php');

function Xinclude($nome_file)
{
   global $_pagine;

   $backtrace = debug_backtrace();
   $_pagine[realpath($nome_file)] = array('file'=>$backtrace[0]['file'],'line'=>$backtrace[0]['line']);
   include($nome_file);
}

function getIncluder($nome_file)
{
   global $_pagine;
   return $_pagine[$nome_file];
}
?>

Il generico file incluso:

<?php
$temp = getIncluder(__FILE__);
echo "Sono stato caricato da $temp[file] alla riga $temp[line]\n";
?>

Non dovrebbero esserci problemi con le inclusioni annidate e le sottocartelle. Unico vincolo è la necessità di includere ciascun file una sola volta.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Non dovrebbero esserci problemi con le inclusioni annidate e le sottocartelle. Unico vincolo è la necessità di includere ciascun file una sola volta.

Questo non è un problema in quanto io includo delle classi con require_once...

grazie per l'aiuto gianni ci 6 sempre!

 O0

risposto 10 anni fa
Xscratch
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda