Comment puis-je vérifier si la fonction my_function
existe déjà en PHP?
En utilisant function_exists
:
if(function_exists('my_function')){
// my_function is defined
}
http://php.net/manual/en/function.function-exists.php
<?php
if (!function_exists('myfunction')) {
function myfunction()
{
//write function statements
}
}
?>
var_dump( get_defined_functions() );
AFFICHE toutes les fonctions existantes
Je veux souligner ce que kitchin a souligné sur php.net:
<?php
// This will print "foo defined"
if (function_exists('foo')) {
print "foo defined";
} else {
print "foo not defined";
}
//note even though the function is defined here, it previously was told to have already existed
function foo() {}
Si vous souhaitez éviter une erreur fatale et définir une fonction uniquement si elle n'a pas été définie, vous devez procéder comme suit:
<?php
// This will print "defining bar" and will define the function bar
if (function_exists('bar')) {
print "bar defined";
} else {
print "defining bar";
function bar() {}
}
Vérification de plusieurs function_exists
$arrFun = array('fun1','fun2','fun3');
if(is_array($arrFun)){
$arrMsg = array();
foreach ($arrFun as $key => $value) {
if(!function_exists($value)){
$arrMsg[] = $value;
}
}
foreach ($arrMsg as $key => $value) {
echo "{$value} function does not exist <br/>";
}
}
function fun1(){
}
Output
fun2 function does not exist
fun3 function does not exist
Et si my_function
est dans l'espace de noms:
namespace MyProject;
function my_function() {
return 123;
}
Vous pouvez vérifier s'il existe
function_exists( __NAMESPACE__ . '\my_function' );
dans le même espace de noms ou
function_exists( '\MyProject\my_function' );
en dehors de l'espace de noms.
P.S. Je sais que c'est une très vieille question et PHP s'est beaucoup améliorée depuis lors, mais je crois que les gens continuent de jeter un œil ici, et cela pourrait être utile.