PHP Fatal error: Can't use method return value in write con

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : PHP Fatal error: Can't use method return value in write con

Re: PHP Fatal error: Can't use method return value in write con

par Hywan » 09 nov. 2009, 08:24

Hey :-),

Ça s'explique facilement par le fait que empty() n'est pas une fonction du langage mais une structure du langage.
J'ai donné plus d'informations dans un tutoriel : isset, empty et is_nulls sont sur un bateau, voir la section Structures du langage versus fonctions natives : prestissimo.

Re: PHP Fatal error: Can't use method return value in write con

par devcphp » 06 nov. 2009, 10:23

je vais suivre ses pistes la et etudiait ce que la pile me renvoit comme erreur.Merci

Re: PHP Fatal error: Can't use method return value in write con

par mojorisin » 05 nov. 2009, 18:37

Je n'ai pas dis que c'étais systématiquement un probleme venant de cela, c'est une piste à vérifier.
En fait empty n'acepte pas l'évaluation d'un retour de fonction directement:
if(empty(maFonction())) // erreur

$ret = maFonction();
if(empty($ret)) // ok

Dans ton cas c'est un problème avec une méthode donc peut être une évalutaion à l'aide de empty en appelant directement la méthode en argument.
Donc peut-etre un code comme cela dans ta classe :
if(empty($this->maFonction())) // Fatal error: Can't use method return value in write context

Essais de mettre en place un gestionnaire d'erreur afin d'afficher la pile des appels :
Voir les fonction php set_error_handler() et debug_print_backtrace()

Re: PHP Fatal error: Can't use method return value in write con

par devcphp » 05 nov. 2009, 17:14

Comment expliqué alors que lorsque je passe par une variable tierce afin de recevoir le contenu de ma fonction , cela ne marche toujours pas.

Peux tu ettayé d'avantage tes propos?

merci

Re: PHP Fatal error: Can't use method return value in write con

par mojorisin » 05 nov. 2009, 17:08

C'est typequement le genre d'eereur lors d'un test avec empty() quand on lui passe en parametre le retour d'une fonction (dans ton cas une méthode de classe) :
if(empty(mafonction()) // Fatal error: Can't use function return value in write context

PHP Fatal error: Can't use method return value in write con

par devcphp » 05 nov. 2009, 16:13

PHP Fatal error: Can't use method return value in write context

Bonjour à tous

tout est dans le titre concernant mon probleme :
Voici le code qui me cause ce souci:
function  SetMetaInfoWord (COM $oWord, $aMetaTransmis){

	$aMetaInfoPossible = array ('Title','Subject','Author','Manager','Company','Category','Application Name','Keywords','Comments');
	if ( FALSE === is_object($oWord) AND FALSE === ($oWord instanceof COM)){
		wb_message_box($window,'Les informations Meta Ne peuvent etre transmis  sans instanciation de word','Erreur Code Word',WBC_WARNING);
	
	}elseif ( extract($aMetaTransmis) !== '9'){  // int extract() 
		
		static $sArgManquant='';
		//array diff nous renverra un tableau (ici forcement à une dimension ) avec les valeurs manquantes
		foreach(array_diff($aMetaTransmis,$aMetaInfoPossible) as $sValeur){
			$sArgManquant.= $sValeur;
		}
		wb_message_box($window,'Le ou les arguments '.$sArgManquant.' n\'ont pas été transmis lors de l\'appel à la fonction','Erreur Code Word',WBC_INFO);
		unset($sArgManquant);


	}elseif ( TRUE === in_array($aMetaTransmis,$aMetaInfoPossible)){
		// on est supposé avoir autant avoir de valeurs dans chacun des tableaux , on crée donc un tableau contenant les clefs definies dans le tableaux des meta possibles auxquelles correspondent les valeurs contenu dans le tableau des meta transmis
		
	foreach (array_combine($aMetaInfoPossible,$aMetaTransmis) as $sClef=>$sValue){
			$oWord->ActiveDocument->BuiltInDocumentProperties($sClef) = $sValue;
		}
		unset ($aMetaTransmis);

	}
}// fin de notre fonction
la ligne de fatal erreur concernen ma boucle foreach.
J'ai essayé de passer par une variable tel que

$aMaVariable = array_combine ...
puis foreach ( $aMaVariable ...

Mais l'erreur ne vient pas de la .

Merci de votre aide