PHP7 method_exists Erreur non Interceptée: nom de la Fonction doit être une chaîne de caractères
J'obtiens cette erreur:
Fatal error: Uncaught Error: nom de la Fonction doit être une chaîne de caractères dans
Pour ce code:
if (function_exists($item['function'])) {
$item['function']($item, $default);
} elseif (method_exists($this, $item['function'])) {
$this->$item['function']($item, $default);
}
Je sais que la modification du code de
if (function_exists($item['function'])) {
$item['function']($item, $default);
} elseif (method_exists($this,$item['function'])) {
$this->{$item['function']}($item, $default);
}
Résolu que l'erreur, mais ma question est de savoir si cette ligne
$item['function']($item, $default);
également être converti en
{$item['function']}($item, $default);
ou peut-il être de gauche?
Êtes-vous sûr de cet élément clé de fonction est défini et son string? Ajouter des contrôles avant de l'utiliser.
OriginalL'auteur backups | 2015-12-29
Vous devez vous connecter pour publier un commentaire.
Cela est dû à des modifications incompatibles dans l'ordre-de-évaluation pour le traitement indirects variables et méthodes:
Non, vous n'avez pas à modifier cette ligne:
Car il n'y a pas d'évaluation qui se passe ici, il suffit d'utiliser l'élément du tableau comme le nom de la fonction et l'appel de la fonction. Vous pouvez le changer, et le code fonctionnera correctement, mais il n'est pas nécessaire.
Mais comme vous l'avez déjà fait correctement, vous devez modifier:
:
Car comme vous pouvez le voir dans cette table:
PHP 7 supposons que vous souhaitiez d'abord accéder à un objet de propriété, et que vous voulez accéder à un index à partir de la propriété, et d'utiliser sa valeur en tant que nom de la méthode à appeler une méthode (de gauche à droite).
D'utiliser la variable et de l'indice de nom de la propriété, vous devez utiliser des accolades pour indiquer que.
OriginalL'auteur
Et utiliser à la place (sans) tableau.
@Svetlio, pas pour les versions plus anciennes, mais pour compatible!
Pourquoi les gens misunderstant? Vous êtes tous trop paresseux pour écrire une ligne pour l'affectation?
OriginalL'auteur