J'utilise un moteur de modèle qui insère du code dans mon site là où je le souhaite.
J'ai écrit une fonction pour tester quelque chose qui est assez simple:
myfunction() { return '($this->data["a"]["b"] ? true : false)'; }
Le problème est que $ this-> data est privé, et je ne peux pas y accéder partout, donc je dois utiliser getData (); ce qui cause mon problème.
$this->getData()['a']['b']
ne fonctionne pas, et l'affectation de la valeur en premier ne le fait pas non plus car elle sera utilisée directement dans un bloc if ().
Des idées?
myfunction()
traitée ultérieurement? Cette partie manque à votre question.Réponses:
Depuis PHP 5.4, il est possible de faire exactement cela:
Référence: https://secure.php.net/manual/en/language.types.array.php#example-62
Sur PHP 5.3 ou version antérieure, vous devrez utiliser une variable temporaire.
la source
PHP 5.4.11-1~precise+1
et cette fonctionnalité ne fonctionne pas! Vous avez un message en réponseParse error: syntax error, unexpected '['
Vous ne pouvez pas utiliser quelque chose comme ceci:
c'est-à-dire que la syntaxe d'accès au tableau n'est pas possible directement sur un appel de fonction.
Vous devez utiliser une variable temporaire , comme ceci:
Dans votre cas, cela signifie probablement utiliser quelque chose comme ceci:
Vous devez :
getData()
méthode et stockez sa valeur de retour dans une variable temporaireVous n'avez pas beaucoup de choix à ce sujet, en fait ...
la source
Ok ... apparemment, il n'y a vraiment pas de meilleur moyen, alors je vais me répondre avec une solution pas si belle:
J'ai créé la fonction:
Et l'a utilisé comme ceci:
Ce n'est pas joli mais ça marche.
la source
$this
->data
est toujours accessible, s'il est protégé. n'est pas accessible de partout, donc si vous revenez dans votre code, et qu'il est évalué comme tel, cela devrait être correct.$object
->data
$this
Btw, il y a un bogue dans votre code: les guillemets doivent être échappés.
la source
C'est possible à partir de la version 5.4 de PHP.
Si vous ne voulez pas de variable temporaire pour cela et que votre version de PHP est inférieure à 5.4 , vous pouvez toujours utiliser quelques fonctions intégrées pour obtenir le premier ou le dernier élément:
Edit: !!! Veuillez noter que dans les versions ultérieures (5.4+), PHP lancera un avis, car end n'attend que des variables comme paramètre.
la source