pb condition ternaire

Eléphant du PHP | 72 Messages

21 déc. 2009, 15:30

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

Mammouth du PHP | 672 Messages

21 déc. 2009, 15:40

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 !

ViPHP
ViPHP | 928 Messages

21 déc. 2009, 15:41

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

Skikit
Invité n'ayant pas de compte PHPfrance

21 déc. 2009, 15:42

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 !