Ifsetor pour php5

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 763 fois - Téléchargée 19 fois

Contenu du snippet

Vous avez peut être entendu parlé de l'opérateur ifsetor de php6
voila en quelque ligne un résultat similaire pour php5 et c'est vrai que c'est plus lisible et plus rapide que les isset(...)?...:..;

Source / Exemple :


<?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;
 }
}
?>

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

Moi au risque de faire mon rabat joie je ne vois pas l'intérêt d'encapsuler une condition dans une fonction... ça alourdi le code pour rien... et ce encore plus avec l'opérateur ternaire... l'intérêt du ifsetor() est qu'il sera (bien que ce ne soit pas encore fait) natif à php donc rapide à l'exécution... après, pour gérer une portabilité descendante, pourquoi pas mais je ne suis pas convaincu... .. .

@ tchaOo°
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Je note quand même, même si je suis d'accord avec Neige : ça n'a pas sa place ici, ce devrait être sur codyx.org.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,

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;
?>
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
Ok... J'avais zappé qu'il se passait ça. ^^
Messages postés
275
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
27 avril 2010
1
Répondre enlève le & et met toi en E_ALL tu vas comprendre
Afficher les 6 commentaires

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.