Solution de contournement pour la syntaxe de base qui n'est pas analysée
Lorsque vous essayez de définir une propriété de classe avec une expression à droite du signe égal, PHP génère une erreur. En effet, PHP n'autorise que les valeurs primitives comme valeurs par défaut pour les constantes et les propriétés de classe.
Pour contourner cette limitation, nous pouvons utiliser une approche en deux étapes :
1. Introduire un tableau statique de constantes
Définir un tableau statique $_types au sein de la classe. Ce tableau contiendra toutes les valeurs constantes possibles.
<code class="php">static protected $_types = null;</code>
2. Créez une méthode pour récupérer des valeurs constantes
Implémentez une méthode getType() qui vous permet de récupérer des valeurs constantes par nom.
<code class="php">static public function getType($type_name) { self::_init_types(); if (array_key_exists($type_name, self::$_types)) { return self::$_types[$type_name]; } else { throw new Exception("unknown type $type_name"); } } protected function _init_types() { if (!is_array(self::$_types)) { self::$_types = [ 'STRING_NONE' => 1 << 0, // ... include all constants 'STRING_HOSTS' => 1 << 6 ]; } }</code>
3. Initialiser les propriétés de classe à l'aide de getType()
Dans le constructeur, vous pouvez désormais initialiser les propriétés de classe à l'aide de la méthode getType().
<code class="php">function __construct($fString = null) { if (is_null($fString)) { $fString = self::getType('STRING_NONE') & self::getType('STRING_HOSTS'); } var_dump($fString); }</code>
En utilisant cette solution de contournement, vous pouvez conserver lisibilité et extensibilité future tout en adhérant aux restrictions syntaxiques de PHP.
Exemple :
<code class="php">$SDK = new SDK(SDK::getType('STRING_HOSTS'));</code>
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!