IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Erreur : "Can't use method return value in write context" [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut Erreur : "Can't use method return value in write context"
    Bonjour,

    Pourquoi n'ai-je pas le droit d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $monBool = ($obj != null && !empty($obj->getString()));
    Sous peine d'obtenir l'erreur suivante :

    Fatal error: Can't use method return value in write context in C:\chemin\mapage.php on line XX
    Je recherche une alternative qui effectuerai le même travaille avec le même nombre de ligne, c'est à dire une et une seule.
    Merci pour vos réponse.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Note:

    empty() ne vérifie que les variables, toute autre chose retournera une erreur d'analyse. En d'autres termes, ce qui suit ne fonctionne pas : empty(trim($name)).
    http://fr2.php.net/empty

    Remplace empty( ) par une autre fonction ou bien par un !=

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Cette ligne est-elle donc strictement équivalente ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $monBool = ($obj != null && $obj->getString() != "");
    Merci.

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par FabaCoeur Voir le message
    Cette ligne est-elle donc strictement équivalente ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $monBool = ($obj != null && $obj->getString() != "");
    Non car :

    Valeurs de retour

    [empty( )] Retourne FALSE si var a une valeur non-vide et différente de zéro.

    Ce qui suit est considéré comme étant vide :

    "" (une chaîne vide)
    0 (0 en tant qu'entier)
    0.0 (0 en tant que nombre à virgule flottante)
    "0" (0 en tant que chaîne de caractères)
    NULL
    FALSE
    array() (un tableau vide)
    var $var; (une variable déclarée, mais sans valeur dans une classe
    Mais as-tu réellement besoin de tout cela ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Erf je m'excuse je n'ai pas réfléchi, j'aurai pu aller voir moi même dans la doc en fait... merci d'avoir pris de votre temps.

    Et en effet je n'ai pas du tout besoin de tester tout ça, je pense que je vais coder ma version de empty() qui teste uniquement les valeurs suivantes :
    ""
    null
    var $var
    Ainsi qu'une seconde qui appliquera un trim() au préalable.
    On est jamais mieux servi que par soit même !

    C'est quand même déroutant de retourner au PHP après avoir fait pas mal de Java et C#.
    A des moments je préfèrerai que les variables soit typées, au moins pour ajouter une certain rigueur à l'écriture.

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    A des moments je préfèrerai que les variables soit typées, au moins pour ajouter une certain rigueur à l'écriture.
    Le cas échéant c'est plus une limitation du langage car empty( ) n'est pas une fonction mais une sorte de mot-clef comme include( ), isset( ), eval( ), etc. Ceci dit je te rejoins sur le typage, moi aussi j'aimerai qu'il soit plus fort, avec un bon FATAL ERROR si besoin au moins on sait où on va.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur "You can't use'\spacefactor' in vertical mode"
    Par mattlev dans le forum Erreurs - Avertissements
    Réponses: 7
    Dernier message: 13/05/2015, 03h00
  2. Réponses: 1
    Dernier message: 24/03/2009, 14h42
  3. Réponses: 1
    Dernier message: 17/09/2006, 22h02
  4. Erreur perl Can't use string ,
    Par vodevil dans le forum Langage
    Réponses: 5
    Dernier message: 01/04/2006, 19h46
  5. Can't call method "mail" on an undefined value
    Par hpalpha dans le forum Modules
    Réponses: 2
    Dernier message: 18/01/2006, 10h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo