


Que faire si les variables statiques php7 ne peuvent pas être affectées aux tableaux
Avec la sortie de PHP 7, de nombreuses nouvelles fonctionnalités et améliorations apportent de meilleures performances et une meilleure lisibilité. Cependant, lors de l'utilisation de variables statiques, nous pouvons rencontrer un problème qui ne peut pas être attribué au tableau. Dans cet article, nous examinerons de plus près ce problème et comment le résoudre.
Avant PHP 7, nous pouvions stocker n'importe quel type de valeur dans des variables statiques, y compris des tableaux. Par exemple :
function test() { static $arr = array('a', 'b', 'c'); print_r($arr); } test(); // 输出 ['a', 'b', 'c']
Cependant, en PHP 7, ce code renvoie l'erreur suivante :
Fatal error: Constant expression contains invalid operations in /path/to/file.php on line 2
C'est parce que PHP 7 a des restrictions plus strictes sur la façon dont les variables statiques peuvent être initialisées. Désormais, nous ne pouvons utiliser que des constantes pour initialiser des variables statiques.
Mais pourquoi ne pouvons-nous pas utiliser des tableaux pour initialiser des variables statiques en PHP 7 ? En effet, dans PHP 7, l'initialisation des variables statiques se fait au moment de la compilation et non au moment de l'exécution. Cela signifie qu'au moment de la compilation, PHP ne connaît pas la longueur du tableau ni les valeurs des éléments et ne peut donc pas déterminer la valeur initiale de la variable statique. En d’autres termes, PHP nécessite une constante définie pour initialiser les variables statiques, alors que les tableaux ne sont pas une constante.
Pour résoudre ce problème, nous pouvons utiliser une constante de classe au lieu d'un tableau. Étant donné que les constantes de classe sont analysées et évaluées au moment de la compilation, elles peuvent être utilisées pour initialiser des variables statiques. Par exemple :
class Test { const ARRAY = array('a', 'b', 'c'); public function test() { static $arr = self::ARRAY; print_r($arr); } } $test = new Test(); $test->test(); // 输出 ['a', 'b', 'c']
Dans cet exemple, nous définissons une constante de classe nommée ARRAY
et l'utilisons comme valeur pour initialiser la variable statique $arr
. Nous utilisons self::
pour faire référence aux constantes de classe car elles appartiennent à des classes, pas à des objets. ARRAY
的类常量,并将其用作初始化静态变量$arr
的值。我们使用self::
来引用类常量,因为它们属于类,而不是对象。
除了使用类常量外,我们还可以使用PHP 7引入的匿名类来初始化静态变量。匿名类是一种没有名称的类,可以在运行时被创建和实例化。它们通常用于创建简单的对象和闭包。
以下是一个使用匿名类初始化静态变量的例子:
function test() { static $arr; if (!isset($arr)) { $arr = (new class { public $items = array('a', 'b', 'c'); })->items; } print_r($arr); } test(); // 输出 ['a', 'b', 'c']
在这个例子中,我们使用一个匿名类来创建一个只有一个属性items
的对象。我们使用$arr
来存储这个对象的items
items
. Nous utilisons $arr
pour stocker la propriété items
de cet objet et l'utilisons comme valeur initiale de la variable statique. Étant donné que les classes anonymes sont créées au moment de l'exécution, nous pouvons utiliser des tableaux pour initialiser des variables statiques. 🎜🎜En résumé, bien que PHP 7 ait des restrictions plus strictes sur la manière d'initialiser les variables statiques, nous pouvons utiliser des constantes de classe et des classes anonymes pour résoudre le problème de l'impossibilité d'attribuer des tableaux. Ces techniques s'appliquent non seulement aux variables statiques, mais également à d'autres scénarios nécessitant des valeurs initiales constantes. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Cet article détaille les nouveaux opérateurs de PHP 7: The Null Coalesming (??), Spaceship (& lt; = & gt;) et les opérateurs de mise en placement nuls (?? =). Ceux-ci améliorent la lisibilité et les performances du code en simplifiant les contrôles et comparaisons nulles, indirectl

Les différences de version mineure de PHP 7 donnent des variations subtiles de consommation de mémoire. Alors que les versions plus récentes améliorent généralement les performances et l'efficacité de la mémoire via des optimisations de moteur Zend et de collecte des ordures, l'impact dépend de l'application. Signifier

Cet article examine l'optimisation du code PHP7 pour les performances. Il traite des goulots d'étranglement communs comme les requêtes de base de données inefficaces, les opérations d'E / S et les fuites de mémoire. Les solutions comprennent des pratiques de codage efficaces, des stratégies de base de données et de mise en cache, Asynch

Cet article détaille la gestion efficace de la session PHP 7, couvrant les fonctionnalités de base comme session_start (), $ _Session, Session_Destroy () et sécuriser la manipulation des cookies. Il met l'accent sur les meilleures pratiques de sécurité, y compris les HTTP, la régénération d'identification de session,

PHP 7 s'est considérablement amélioré lors des versions précédentes en abordant de nombreux bogues, en améliorant les performances et en renforçant la sécurité. Les améliorations clés comprenaient un moteur Zend réécrit, la gestion optimisée de la mémoire et la gestion des erreurs raffinées. Pendant que Gene

Cet article examine la gestion des sessions dans PHP7, mettant en évidence les améliorations des performances résultant du moteur Zend amélioré. Il traite des problèmes de compatibilité potentiels de la mise à niveau et des stratégies d'optimisation des détails pour la sécurité et l'évolutivité

Cet article explique comment surveiller les performances de l'application PHP 7 à l'aide d'une nouvelle relique. Il détaille la configuration de New Relic, les indicateurs de performances clés (KPI) comme le score APDEX et le temps de réponse, l'identification du goulot d'étranglement via des traces de transaction et une piste d'erreur

Cet article détaille la mise à niveau de PHP 5.6 vers PHP 7, en mettant l'accent sur les étapes cruciales comme le sauvegarde, la vérification de la compatibilité des serveurs et le choix d'une méthode de mise à niveau (gestionnaire de package, compilation, panneau de configuration ou configuration du serveur Web). Il aborde Potentia
