So definieren Sie Klasseneigenschaften mit komplexen Standardwerten in PHP

Susan Sarandon
Freigeben: 2024-10-20 13:47:02
Original
290 Leute haben es durchsucht

How to Define Class Properties with Complex Default Values in PHP

Problemumgehung für nicht analysierte Basissyntax

Die strengen Syntaxregeln von PHP können eine Hürde darstellen, wenn Klasseneigenschaften mit komplexen Standardwerten definiert werden. Während eine Syntax wie (1 << 0) einfach erscheinen mag, betrachtet PHP sie als einen Ausdruck mit Nebenwirkungen und nicht als einen gültigen Standardwert in Klassendeklarationen.

Grundlegendes zu den Klassendeklarationsbeschränkungen von PHP

In PHP müssen Standardwerte für Klassenkonstanten oder Eigenschaften primitive Werte sein, wie zum Beispiel:

const ABC = 8;
static $GHI = 15;
Nach dem Login kopieren

Diese Einschränkung ergibt sich aus dem Prinzip, dass deklarative Anweisungen keine Nebenwirkungen erzeugen sollten.

Benutzerdefinierte Typen erstellen und mit Ausdrücken initialisieren

Um diese Einschränkung zu überwinden, können wir benutzerdefinierte Typen erstellen und sie mit Ausdrücken außerhalb der Klassendeklaration initialisieren:

class SDK {

    // Example of self-created type
    static private $STRING_NONE = 1 << 0;

}

$fString = SDK::$STRING_NONE;
Nach dem Login kopieren

Refactoring der ursprünglichen Klasse

Anwenden dieser Problemumgehung auf das ursprüngliche Klassenbeispiel:

class SDK {

    static private $_types = null;

    static public function getType($type_name) {
        self::_init_types();
        return self::$_types[$type_name];
    }

    static private function _init_types() {
        if (!is_array(self::$_types)) {
            self::$_types = array(
                'STRING_NONE' => 1 << 0,
                // ... rest of types here
            );
        }
    }

    function __construct($fString = null) {
        if (is_null($fString)) {
            $fString = self::getType('STRING_NONE') & self::getType('STRING_HOSTS');
        }
    }

}

$SDK =& new SDK(SDK::getType('STRING_HOSTS'));

Dieser Ansatz ermöglicht es uns, Typen darin zu definieren und zu verwenden die Klasse und berücksichtigt dabei Standardwerte, die das Ergebnis von Ausdrücken sind.

Das obige ist der detaillierte Inhalt vonSo definieren Sie Klasseneigenschaften mit komplexen Standardwerten in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!