php / php/php-src

Typed property /w magic __get cannot be uninitialized

Offen
#9,389 6 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Extension: reflection Feature Status: Needs Triage
Vorherrschende Sprache
C
Sterne
40.4k
Forks
8.1k
Ø Merge
2 T. 13 Std.
Gemergte PRs (30 T.)
96

Beschreibung

Description

demo: https://3v4l.org/lDeXi

Currently, typed property can be "almost uninitialized" by unset().

But doing such uninitialization unsets the property and allows magic __get to kick in. This is expected and discussed in https://github.com/php/php-src/issues/9021.

Because of this, non-readonly typed property cannot be uninitialized properly. This is an issue in cases when the same object is to be restored, reused or cleaned.

To allow an object state to be restored/uninitialized correctly, I propose to add ReflectionProperty::setUninitialized() method and backport it into PHP 8.0 and above.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit der ReflectionProperty API, der 3v4l-Demo und der verknüpften Diskussion über das Verhalten von __get. Ermittle die Kompatibilitäts- und Implementierungsanforderungen für eine Methode setUninitialized(), einschließlich des angeforderten Backports für PHP 8.0 und höher; das Issue ist abgeschlossen, wenn der Vorschlag implementiert ist und sein Verhalten durch die Tests des Projekts abgedeckt wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
c, php
Bereich
backend
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
28/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.