Salut,
je viens de constater un comportement surprenant de PHP. Et je suis assez friand d'explications!!
j'ai un fichier a.php :
Code :
- <?php
- include_once('b.php');
- echo foo();
- if(!function_exists('foo')) {
- function foo() {
- $v = 'foo';
- return $v;
- }
- }
- ?>
|
et dans b.php :
Code :
- <?php
- if(!function_exists('foo')) {
- function foo() {
- $v = 'bar';
- return $v;
- }
- }
- ?>
|
echo foo(); m'affiche bar.
Maintenant, je supprime le test qui me permet de savoir si ma fonction existe dans a.php, j'ai donc :
Code :
- <?php
- include_once('b.php');
- echo foo();
- function foo() {
- $v = 'foo';
- return $v;
- }
- ?>
|
echo foo(); me renvoie foo!
Etonnant, non!
---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence