8797 sujets

Développement web côté serveur, CMS

Salut tout le monde

Mon problème est assez simple. Je fais une série de test pour savoir si un évènement est possible. A chaque test, mon drapeau peut passer de 1 (possible) à 0 (impossible), mais jamais dans l'autre sens. J'utilise une syntaxe qui me satisfait que moyennement et j'aimerais savoir s'il existe plus simple (et sans doute plus propre). Voilà à quoi j'arrive pour l'instant :

function VerifTruc()
{
	$flag=1;
	if(!$machin){$flag=0;}
	if($flag==1)
	{
		//instruction
		if(!$machin2){$flag=0;}
	}
	if($flag==1)
	{
		//instructions
		if($machin3){$flag=0;}
	}
	return $flag;
}


Bien sûr le code là est très simplifiée les tests sont plus complexes que des vrai/faux et les instructions sont parfois assez lourdes (genre créations d'objets et/ou requêtes SQL assez lourdes.
L'objectif est donc d'éviter les opérations inutiles, en gros de s'arrêter dès que $flag passe à 0; mais de pouvoir continuer tant que $flag reste à 1...

J'avais bien pensé aux switch case, mais à vrai dire c'est pas la syntaxe où je suis le plus à l'aise et je vois mal comment l'adapter ici. Smiley ohwell

Merci d'avance à tout ceux qui auront des idées ^^
Modifié par Lothindil (08 Nov 2012 - 10:33)
Hello,

return à pour effet de terminer immédiatement la fonction donc pourquoi ne pas l'utiliser pour éviter d'avoir à effectuer tout les traitements ? Perso, je renverrai aussi plutôt un booléen.


function VerifTruc()
{

if(!$machin2){return false;} // Faux
if($machin3){return false;} // Faux

// Tout les test sont réussis, on retourne Vrai
return true;
}

if (VerifTruc()) {
// fais ci
}
J'avais oublié que return finissait la fonction.

Et hors d'une fonction y a une possibilité du même genre ou pas ?


(pour le booléen, oui, je pourrais aussi... Mais j'avoue que je travaille presque toujours avec des entiers et souvent avec 0 pour 0 erreur et les chiffres après pour préciser l'erreur, surtout en ajax. J'ai donc pris l'habitude des 0 et 1 -et souvent chez moi 0 c'est que ça marche d'ailleurs... Smiley rolleyes )
Modifié par Lothindil (08 Nov 2012 - 16:56)
Quelques cas complètement farfelues :

function VerifTruc()
	{
	if(isset($machin))
		{
		START:
		switch($machin)
			{
			case 1:
			case 2:
				return TRUE;
				break;
			case 3:
				return FALSE;
				break;
			case 'nJut':
				GOTO START;
				break;
			default:
				return FALSE;
				break;
			}
		}
		elseif(isset($machin2) AND isset($machin3))
			{
			return (!$machin2 OR $machin3) ? 0 : FALSE;
			}
			else
				{
				return (isset($truc)) ? (($truc == 2) ? TRUE : FALSE) : FALSE;
				}
	}