Heim >Backend-Entwicklung >PHP-Tutorial >Wie ordne ich Klasseneigenschaften in PHP anonyme Funktionen zu?

Wie ordne ich Klasseneigenschaften in PHP anonyme Funktionen zu?

Susan Sarandon
Susan SarandonOriginal
2024-10-26 13:25:02704Durchsuche

How to Assign Anonymous Functions to Class Properties in PHP?

Anonyme Funktionen zu Klasseneigenschaften in PHP zuweisen

In PHP ist es nicht möglich, eine Klasseneigenschaft direkt einer anonymen Funktion zu initialisieren, wenn es zu erklären. Der folgende Codeausschnitt:

<code class="php">class AssignAnonFunction {
    private $someFunc = function() {
        echo "Will Not work";
    };
}</code>

Generiert die Fehlermeldung „Parse-Fehler: Syntaxfehler, unerwartete T_FUNCTION.“ Dies liegt daran, dass die PHP-Sprache die Initialisierung von Eigenschaften mit Funktionen während der Deklarationsphase nicht zulässt.

Einschränkung der Konstantwertinitialisierung

Laut PHP-Handbuch Klasseneigenschaften können während ihrer Deklaration nur mit konstanten Werten initialisiert werden. Ein konstanter Wert ist ein Wert, der zur Kompilierzeit ausgewertet werden kann, ohne auf Laufzeitinformationen angewiesen zu sein. Funktionen erfüllen dieses Kriterium jedoch nicht und sind daher bei der Deklaration nicht als Eigenschaftsinitialisierer zulässig.

Problemumgehung mit Konstruktor

Obwohl es nicht möglich ist, Eigenschaften mit anonymen Funktionen zu initialisieren Bei der Deklaration ist es möglich, Eigenschaften innerhalb der Konstruktormethode Funktionen zuzuweisen. Eine Änderung des vorherigen Codes wie folgt ermöglicht die Zuweisung:

<code class="php">class AssignAnonFunctionInConstructor {
    private $someFunc;

    public function __construct() {
        $this->someFunc = function() {
            echo "Does Work";
        };
    }
}</code>

Die Konstruktormethode wird bei der Objekterstellung aufgerufen und ermöglicht die Zuweisung der anonymen Funktion zur Eigenschaft zur Laufzeit.

Das obige ist der detaillierte Inhalt vonWie ordne ich Klasseneigenschaften in PHP anonyme Funktionen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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