Je vais peut être passé pour un attardé, mais je viens de me rendre compte qu'il est tout à fait possible depuis PHP 5.3 de passer une fonction lambda en argument à set_error_handler()
et set_exception_handler()
:
<?php
set_error_handler(
function($value, $message, $file, $line, array $context) {
fwrite(STDERR, $message);
die($value);
}
);
?>
Non, ce n'est pas du javascript, mais bien du PHP.
Et je dois avouer que je trouve cette écriture bien plus esthétique
que celle-ci, utilisée traditionnellement :
<?php
function errorHandler($value, $message, $file, $line, array $context)
{
fwrite(STDERR, $message);
die($value);
}
set_error_handler(errorHandler);
?>
2 réactions
1 De metagoto - 19/05/2010, 18:56
"Je vais peut être passé pour un attardé"
Peut être pas *attardé*, mais ça m'a surpris
Les func anonymes sont des callables, donc ça passe sans prob partout où on attend un callable.
2 De mageekguy - 19/05/2010, 20:27
@metagoto : Quand j'ai pensé à cela, j'avoue que je me suis trouvé bien stupide.
Je n'y avais juste jamais pensé, va savoir pourquoi...
Pourtant, j'use et j'abuse des lambdas/closures, depuis quelques temps.