2009-01-04 11 views
2

Ceci est un peu une idée folle, mais il y aurait un moyen d'amorcer toutes les fonctions que PHP a sans utiliser une fonction d'aide pour appeler les fonctions. Ce que je veux dire, c'est d'appeler un code ou une fonction avant et après chaque appel de fonction de base.Bootstrap toutes les fonctions en PHP

Exemple:

<?php 
echo "Hello"; 
?> 

Mais ces fonctions seraient appelés avant et après l'écho écho:

<?php 
function pre_echo() 
{ 
    do_something(); 
} 

function post_echo() 
{ 
    do_something_else(); 
} 
?> 

Répondre

5

« bootstrapping » n'est pas le terme correct ici - ce que vous voulez faire est appelé Aspect-oriented Programming et yes, it can be done in PHP. Cependant, il semble exiger des changements substantiels à la façon dont vous utilisez normalement PHP.

+0

Merci, je n'étais pas sûr du terme à utiliser. – Botto

1

Tout comme un FYI, votre exemple quelque chose qui est ramassé pas vraiment une fonction dans la sens le plus strict, echo est une construction de langage et gérée différemment par les internes de PHP.

Je pense qu'il n'y a que deux façons de réaliser ce que vous recherchez bien:

  • Prétraitez votre code PHP pour augmenter avec fonction surchargée appelle
  • ou modifier les entrailles PHP pour support d'accrochage tous fonction appelle
+0

Vous avez raison, je n'ai pas pensé directement à ce que j'utilisais à titre d'exemple. L'idée de modifier les internes était quelque chose que je pensais, mais suivre les versions de php aurait été une douleur. Merci – Botto

1

Pourquoi voulez-vous faire cela? Si vous voulez profiler votre code, utilisez un profileur comme Xdebug

+0

Idées de sécurité fou que j'ai, mais merci. Je ne connaissais pas xdebug – Botto

0

C'est pourquoi vous écrivez vos propres classes et encapsulez la fonctionnalité que vous voulez avoir dans ce cas spécifique. Pourquoi rendre vos choses plus difficiles à comprendre pour un autre programmeur?

0

vous pouvez le faire. vous devez modifier le fichier php.ini

aux directives

auto_prepend_file 
auto_append_file 

par exemple

auto_prepend_file=/home/php/run_before.php 
auto_prepend_file=/home/php/run_after.php 

puis

<?php echo('hi'); ?> 

la sortie sera:

# something before 
hi 
# something after 
Questions connexes