User Tools

Site Tools


doc:appunti:prog:php_include

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:prog:php_include [2009/03/05 17:46] niccolodoc:appunti:prog:php_include [2009/03/05 18:02] (current) niccolo
Line 27: Line 27:
 Qual'è il contesto in cui viene valutato l'include del file **''lib/header.php''**? Qual'è il contesto in cui viene valutato l'include del file **''lib/header.php''**?
  
-Contrariamente a quello che si potrebbe pensare la working directory riportata da **''getcwd()''** è la directory principale, ed anche lo script corrente riportato da **''$_SERVER['SCRIPT_NAME']''** è sempre ''index.php''. Quindi **il contesto predefinito rimane quello dello script principale** (''index.php'' nel nostro caso).+Contrariamente a quello che si potrebbe pensare la working directory riportata da **''getcwd()''** è la directory principale, ed anche lo script corrente riportato da **''$_SERVER['SCRIPT_NAME']''** è sempre ''index.php''. Quindi **il contesto predefinito rimane quello dello script principale** (del file **''index.php''** nel nostro caso).
  
-Solo se la funzione ''include()'' fallisce viene cercato il contesto più internola sottodirectory **''lib''** nel nostro caso.+Solo se la funzione ''include()'' fallisce viene cercato il contesto più interno (la sottodirectory **''lib''** nel nostro caso).
  
 ===== Evitare path assoluti ===== ===== Evitare path assoluti =====
Line 35: Line 35:
 Quando si utilizza una **''include()''** è bene usar sempre percorsi relativi, in modo che le pagine PHP possano essere spostate nel filesystem senza problemi. Quando si utilizza una **''include()''** è bene usar sempre percorsi relativi, in modo che le pagine PHP possano essere spostate nel filesystem senza problemi.
  
-Tuttavia se abbiamo più livelli di ''include()'' in file che risiedono in directory diverse, la faccenda si complica perché il percorso è inteso sempre relativo al primo script interpretato.+Tuttavia se abbiamo più livelli di ''include()'' in file che risiedono in directory diverse, la faccenda si complica perché il contesto predefinito è inteso relativo al primo script interpretato.
  
 In questo esempio l'include di **''header.php''** funziona per **''index.php''**, ma fallisce per **''it/index.php''**: In questo esempio l'include di **''header.php''** funziona per **''index.php''**, ma fallisce per **''it/index.php''**:
Line 53: Line 53:
 </code> </code>
  
-Una soluzione è quella di usare la variabile **''%%__FILE__%%''** negli include() annidati:+Una soluzione è quella di usare la variabile **''%%__FILE__%%''** per determinare a runtime il percorso assoluto dello script incluso. 
 + 
 +Ad esempio per essere certi che **''common.php''** includa **''header.php''** dalla sua directory si può usare:
  
 <code php> <code php>
-__FILE__ +include(dirname(__FILE__) . '/' . 'header.php');
 </code> </code>
doc/appunti/prog/php_include.1236271561.txt.gz · Last modified: 2009/03/05 17:46 by niccolo