Page 1 sur 1

pb condition ternaire

Posté : 21 déc. 2009, 15:30
par devcphp
Bonjour,

j'ai un petit probleme pour realiser une condition ternaire dans une fonction:
function TEST( $sNomServeur=''){  // il se peut que rien ne soit passer à ma fonction en argument
    if (!$sNomServeur)? $this->sNomServeur = $oFile_Xml->xpath("//Envois/ParamEnvoi[@id='SERVEUR_FTP']") : $this->sNomServeur = $sNomServeur;
			


}
php me jette pourtant j'ai respecté les recommandations en protegant par des parentheses.Quelqu'un aurait il un debut de reponse .
Merci

Re: pb condition ternaire

Posté : 21 déc. 2009, 15:40
par macgawel
Bonjour,

j'ai un petit probleme pour realiser une condition ternaire dans une fonction:
function TEST( $sNomServeur=''){  // il se peut que rien ne soit passer à ma fonction en argument
    if (!$sNomServeur)? $this->sNomServeur = $oFile_Xml->xpath("//Envois/ParamEnvoi[@id='SERVEUR_FTP']") : $this->sNomServeur = $sNomServeur;
			


}
php me jette pourtant j'ai respecté les recommandations en protegant par des parentheses.Quelqu'un aurait il un debut de reponse .
Merci
Bonjour.

Voir le manuel :
<?php
// Exemple d'utilisation pour l'opérateur ternaire
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

// La ligne ci-dessus est identique à la condition suivante :
if (empty($_POST['action'])) {
   $action = 'default';
} else {
   $action = $_POST['action'];
}

?>
Il faut utiliser if ou l'opérateur ternaire, pas les deux !

Re: pb condition ternaire

Posté : 21 déc. 2009, 15:41
par Genova
Oula, tu t'es pas mal embrouillé, tu as fait un mix entre un if normal et un ternaire. Sache que le ternaire n'est jamais indispensable, et que c'est un raccourci d'écriture qui peut rapidement devenir illisible, surtout utilisé à mauvais escient.

Voilà ce que tu veux faire sous forme de if :
function TEST( $sNomServeur='')
{
   if (!$sNomServeur)
   {
      $this->sNomServeur = $oFile_Xml->xpath("//Envois/ParamEnvoi[@id='SERVEUR_FTP']");
   }
   else
   {
      $this->sNomServeur = $sNomServeur;
   }
}
Et avec un ternaire :
function TEST( $sNomServeur='')
{
   $this->sNomServeur = (!$sNomServeur) ? $oFile_Xml->xpath("//Envois/ParamEnvoi[@id='SERVEUR_FTP']") : $sNomServeur;
}

Re: pb condition ternaire

Posté : 21 déc. 2009, 15:42
par Skikit
Salut,

Tu fais une faute de logique :
Tu initialises ta variable $sNomServeur à vide certes mais comme un string,
or tu utilises ensuite ta variable comme un booléen avec l'opérateur "!" qui signifie "not".
Pour tester si une chaîne est vide, il y a la fonction empty().
Ensuite, ta syntaxe est complétement fausse... Une ternaire remplace un if, toi tu mets les deux !