web-dev-qa-db-fra.com

Bizarre PHP erreur: 'Impossible d'utiliser la valeur de retour de fonction dans le contexte d'écriture'

Je reçois cette erreur et je ne peux pas en faire la tête ou la queue.

Le message d'erreur exact est:

Erreur fatale: impossible d'utiliser la valeur renvoyée par la fonction dans le contexte d'écriture dans /home/curricle/public_html/descarga/index.php à la ligne 48

La ligne 48 est:

if (isset($_POST('sms_code') == TRUE ) {

Quelqu'un sait ce qui se passe ???

PS Voici la fonction complète, au cas où cela aiderait:

function validate_sms_code() {

    $state = NOTHING_SUBMITED;

    if (isset($_POST('sms_code') == TRUE ) {
        $sms_code = clean_up($_POST('sms_code'));
        $return_code = get_sepomo_code($sms_code);

        switch($return_code) {

          case 1:
            //no error
            $state = CORRECT_CODE;
            break;

          case 2:
            // code already used
            $state = CODE_ALREADY_USED;
            break;

          case 3:
            // wrong code
            $state = WRONG_CODE;
            break;

          case 4:
            // generic error
            $state = UNKNOWN_SEPOMO_CODE;
            break;

          default:
            // unknown error
            $state = UNKNOWN_SEPOMO_CODE;
            throw new Exception('Unknown sepomo code: ' . $return_code);
            break;
        }

    } else {
        $state = NOTHING_SUBMITED;
    }
    dispatch_on_state($state);
}
179
cfischer

Vous voulez dire

if (isset($_POST['sms_code']) == TRUE ) {

si par hasard vous voulez vraiment dire

if(isset($_POST['sms_code'])) {
111
chaos

Cela se produit également lors de l'utilisation de empty sur un retour de fonction:

!empty(trim($someText)) and doSomething()

car empty n'est pas une fonction mais une construction de langage (pas sûr), et il ne prend que des variables:

Droite:

empty($someVar)

Faux:

empty(someFunc())

Depuis PHP 5.5, il supporte plus que des variables. Mais si vous en avez besoin avant la version 5.5, utilisez trim($name) == false. De documentation vide .

489
rolfen
if (isset($_POST('sms_code') == TRUE ) {

changer cette ligne en

if (isset($_POST['sms_code']) == TRUE ) {

Vous utilisez parentheseis () pour $_POST mais vous vouliez des crochets []

:)

OR

if (isset($_POST['sms_code']) && $_POST['sms_code']) { 
//this lets in this block only if $_POST['sms_code'] has some value 
22
TigerTiger

pour WORDPRESS:

au lieu de:

if (empty(get_option('smth')))

devrait être:

if (!get_option('smth'))
13
T.Todua

Corrigez la syntaxe (il vous manquait une parenthèse):

if (isset($_POST['sms_code']) == TRUE ) {
                            ^

p.s. vous n'avez pas besoin de la partie == TRUE, car BOOLEAN (true/false) est déjà renvoyé.

10
middus

Cela peut se produire dans plusieurs scénarios. Vous trouverez ci-dessous une liste de scénarios bien connus:

// calling empty on a function 
empty(myFunction($myVariable)); // the return value of myFunction should be saved into a variable
// then you can use empty on your variable

// utilisant des parenthèses pour accéder à un élément d'un tableau, les parenthèses sont utilisées pour appeler une fonction

if (isset($_POST('sms_code') == TRUE ) { ...
// that should be if(isset($_POST['sms_code']) == TRUE)

Cela pourrait également être déclenché lorsque nous essayons d'incrémenter le résultat d'une fonction comme ci-dessous:

$myCounter = '356';

$myCounter = intVal($myCounter)++; // we try to increment the result of the intVal...
// like the first case, the ++ needs to be called on a variable, a variable should hold the the return of the function then we can call ++ operator on it.
4
Mehdi Karamosly

J'ai aussi eu un problème similaire au vôtre. Le problème est que vous utilisez une ancienne version de PHP. J'ai mis à niveau vers PHP 5.6 et le problème n'existe plus.

3
husnixs

Le problème est dans le () vous devez aller []

if (isset($_POST('sms_code') == TRUE)

par

if (isset($_POST['sms_code'] == TRUE)
3
Diego

Un autre scénario dans lequel cette erreur est déclenchée à cause d'une erreur de syntaxe:

ucwords($variable) = $string;
1
tomelin5

j'ai également rencontré ce problème en raison d'une erreur de syntaxe. Utilisation de "(" au lieu de "[" dans l’index de tableau:

   foreach($arr_parameters as $arr_key=>$arr_value) {
        $arr_named_parameters(":$arr_key") = $arr_value;
    }
0
Shaakir