J'obtiens 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 de retour de 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 ) {
Que pourrait-il se passer ici?
Voici la fonction complète:
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);
}
php
fatal-error
cfischer
la source
la source
$state
ne sera pas modifié, pas besoin de le réinitialiserNOTHING_SUBMITED
si c'est déjà cette valeur.Réponses:
Vous voulez dire
bien qu'incidemment tu veux vraiment dire
la source
if (isset($_POST['sms_code']) === TRUE ) {
:-)Cela se produit également lors de l'utilisation de empty sur un retour de fonction:
car vide n'est pas une fonction mais une construction de langage (pas sûr), et il ne prend que des variables:
Droite:
Faux:
Depuis PHP 5.5, il prend en charge plus que des variables. Mais si vous en avez besoin avant la version 5.5, utilisez
trim($name) == false
. De la documentation vide .la source
empty()
n'est pas réellement une fonction; c'est une construction de langage, commeecho
. L'analyseur PHP gère les constructions de langage différemment. Dans le cas deempty
, il considère le paramètre comme une variable, pas comme quelque chose à évaluer, donc si vous essayez de passer une fonction, cela se brise. Du moins, c'est ce que je comprends. Plus d'infos ici et ici .function mTEE($val){ return empty($val); }
changer cette ligne en
Vous utilisez parentheseis () pour
$_POST
mais vous vouliez des crochets []:)
OU
la source
pour WORDPRESS :
au lieu de:
devrait être:
la source
Syntaxe correcte (il vous manquait des parenthèses à la fin):
ps vous n'avez pas besoin de
== TRUE
pièce, car BOOLEAN (vrai / faux) est déjà renvoyé.la source
Cela peut se produire dans plusieurs scénarios, voici une liste de scénarios bien connus:
// en utilisant des parenthèses pour accéder à un élément d'un tableau, les parenthèses sont utilisées pour appeler une fonction
Cela pourrait également être déclenché lorsque nous essayons d'incrémenter le résultat d'une fonction comme ci-dessous:
la source
if(i++)
, cela peut sembler plus court que d'incrémenter le compteur puis d'évaluer sa valeur, mais cela vous causera des maux de tête si jamais il bogue. Edit: Je n'implique pas que vous le faites, je le signale simplement aux nouveaux programmeurs qui lisent la réponse et pensent que c'est une bonne chose, pour incrémenter des valeurs tout en calculant ou en évaluant ce qui est incrémenté.=
au lieu de==
dans une instruction if.Le problème est que
()
tu dois partir[]
par
la source
J'ai également 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.
la source
Un autre scénario dans lequel cette erreur est déclenchée en raison d'une erreur de syntaxe:
la source
ucwords
retourner une chaîne et le contexte de l'appel est incorrect, si vous essayez par exemple avec$Test = ''; ${ucwords('test')} = 'String new !'; echo $Test;
, alors montrez-vous la nouvelle valeur assignée.J'ai également rencontré ce problème en raison d'une erreur de syntaxe. Utilisation de "(" au lieu de "[" dans l'index du tableau:
la source
Cette erreur est tout à fait juste et met en évidence un problème de syntaxe contextuelle. Peut être reproduit en exécutant n'importe quelle sorte de syntaxe "non assignable". Par exemple:
function Syntaxe ($ hello) {.... puis essayez d'appeler la fonction comme si une propriété et attribuer une valeur .... $ this-> Syntax ('Hello') = 'World';
L'erreur ci-dessus sera générée car la syntaxe de l'instruction est erronée. La bonne affectation de «Monde» ne peut pas être écrite dans le contexte que vous avez utilisé (c'est-à-dire syntaxiquement incorrecte pour ce contexte). 'Impossible d'utiliser la valeur de retour de la fonction' ou il pourrait lire 'Impossible d'attribuer la valeur de droite à la fonction car elle est en lecture seule'
L'erreur spécifique dans le code OP est telle que mise en évidence, en utilisant des crochets au lieu de crochets.
la source
Peut être causé par un opérateur erroné, =, alors qu'il devrait être ==
Ce code lève cette erreur
Notez que = est un opérateur d'affectation et non un opérateur de comparaison. Le correctif consiste à changer = en ==.
la source