php automatisierter Setter und Getter

7

Ich versuche, ein automatisiertes Getter und Setter für PHP-Objekte zu implementieren.

Mein Ziel ist es, für jede Eigenschaft automatisch die Methoden getProperty() und setProperty(value) zu haben. Wenn die Methode nicht für eine Eigenschaft implementiert ist, wird das Skript einfach den Wert setzen oder erhalten.

Ein Beispiel, um mich klar zu machen:

%Vor%

oder

%Vor%

Irgendwelche Ideen / Hinweise, wie das geht?

    
sebataz 05.01.2012, 13:00
quelle

3 Antworten

19

Wenn Sie die Funktionen getXy und setXy für beliebige Eigenschaften simulieren möchten, verwenden Sie den magischen Wrapper __call :

%Vor%

Dies wäre eine gute Gelegenheit, einmal etwas Nützliches zu tun, indem man eine Typmap oder irgendetwas hinzufügt. Sonst gehen Getter verloren und Setter könnten insgesamt ratsam sein.

    
mario 05.01.2012, 13:11
quelle
3

lies magic functions of php und du brauchst __get and __set functions

lesen Sie dies

    
Dau 05.01.2012 13:03
quelle
0

Ich weiß, dass diese Frage alt sein könnte, aber ich denke, ich kann Ihnen oder den Leuten helfen, die in Zukunft auf diese Frage stoßen werden ... Es gibt ein Projekt / eine Bibliothek namens pLombok. Es entspricht dem Java-Lombok ( Ссылка ), in dem Entwickler eine Bibliothek entwickelt haben, die Code wie Getter und Setter im laufenden Betrieb erzeugt, um den Code zu entfernen . Die Grundidee meines Projekts besteht also darin, spezielle Kommentare wie:

zu verwenden

/** * @Setter */

/** * @Getter */

und so weiter, um pLombok mitzuteilen, den Getter und Setter für jede Eigenschaft zu generieren und den generierten Code der bestimmten Klasse hinzuzufügen, bevor das Programm ausgeführt wird.

Beispiel

Der folgende Code:

%Vor%

generiert:

%Vor%

im laufenden Betrieb!

Es gibt noch viele andere Funktionen wie das Generieren eines Konstruktors ohne Felder, eines Konstruktors mit allen Argumenten oder einer einfachen toString-Methode usw.

Mit Composer installieren

Mit Composer können Sie pLombok einfach installieren:

%Vor%

Danach können Sie es wie folgt verwenden:

Erstellen Sie eine einfache Klasse (src / project / Person.php)

%Vor%

Konfigurieren Sie Autoloading für Composer (composer.json)

%Vor%

Mach einfach:

%Vor%

Sagen Sie pLombok jetzt, dass Sie auf den bestimmten Namespace achten und sich darum kümmern sollten. Erstellen Sie dafür eine neue Datei:

Verwenden Sie pLombok und den generierten Getter / Setter (test.php)

%Vor%

Dokumentation

Die vollständige Dokumentation befindet sich auf GitHub: Ссылка

Ich hoffe, das hilft.

    
mwatzer 14.02.2018 01:21
quelle

Tags und Links