Soyez le premier à donner votre avis sur cette source.
Snippet vu 4 875 fois - Téléchargée 21 fois
<?php if(!function_exists('ifsetor')){//En espérant que ca suffise pour la migration a venir function ifsetor(&$var,$set){ return isset($var)?$var:$set; } } ?>
23 déc. 2007 à 15:08
@ tchaOo°
20 déc. 2007 à 19:47
20 déc. 2007 à 19:46
je pense que par son interrogation pour savoir si le function_exists() suffira, il parlait plutôt de la façon d'écrire la fonction. Est-ce que la fonction php6 s'appellera bien "ifsetor" ;-)
Ca, tu verras bien.
C'est intéressant...que ce soit plus lisible que l'opérateur ternaire, pas de doute? Plus rapide, pas à l'exécution vu que tu utilises aussi l'opérateur ternaire, comme on l'utiliserait sans ta fonction; plus rapide à l'écriture, ça oui.
J'ai réflêchi à un truc : avec l'opérateur ternaire, on peut gérer plusieurs conditions. Pas avec ta fonction (en tous cas, pas en "natif").
Avec func_get_args(), ça marche, sauf que si les $set passés n'existent pas, on a évidemment une erreur. Ca obligerait à appeler ta fonction en masquant les erreurs...burk.
Bref, je propose une petite modification, avec 2 versions. Une générant des erreurs (si si!! j'ose...), une en utilisant un tableau. Les deux ont un inconvénient : la 1ère nécessite un appel avec @, l'autre de passer un tableau dont les variables sopnt des références...c'est moche dans les deux cas. Mais c'est à réflêchir. Je pense quand même qu'en php pur, on ne fera pas mieux...
L'autre truc, c'est que je n'utilise pas d'opérateur ternaire : il est plus lent qu'un if...else. Si on garde ta fonction telle quelle, je pense qu'il faut virer l'opérateur ternaire, ce sera tjrs plus rapide.
<?php
/*
if(!function_exists('ifsetor')){//En espérant que ca suffise pour la migration a venir
function ifsetor(&$var){
$iCpt = 0;while(false !($mArg (func_get_arg($iCpt)))) {
if(isset($mArg)) {
return $mArg;
}
$iCpt++;
}
}
}
$a = @ifsetor($a, $b, $c, 5);
echo $a;
*/
if(!function_exists('ifsetor')){//En espérant que ca suffise pour la migration a venir
function ifsetor(&$var, $aArgs){
if(isset($var)) {
return $var;
}
foreach($aArgs as $mArg) {
if(isset($mArg)) {
return $mArg;
}
}
}
}
$a = ifsetor($a, array(&$b, &$c, 5));
echo $a;
?>
20 déc. 2007 à 16:44
20 déc. 2007 à 16:35
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.