dedlfix: Triggermethode in PHP

Beitrag lesen

Tach!

Höre ich da Kapselung? Was will man da groß kapseln, wenn es sowieso ein 1:1-Durchgriff ist.

na bei einigen Entitäten möchte man vielleicht getter oder setter kapseln. Ich finde dies schon wichtig. zumindest machen das viele ORM so (z.B. JPA).

Bei einigen, richtig, aber nicht bei allen. Wir sind zwar hier bei PHP und müssen uns mit dessen Möglichkeiten abfinden, aber ich schweife mal kurz zu C# ab. Dort gibt es zwei Arten von Klassenvariablen: Fields und Propertys. Fields sind die einfachen Eigenschaften mit direktem Schreib- und Lesezugriff. Eine Property hingegen hat Getter und Setter eingebaut. Der Zugriff erfolgt wie bei Fields und anderen Variablen mit einfachem Lese- und Schreibzugriff. Früher musste man da noch selbst den Zugriff auf ein privates Field in den Getter/Setter reinschreiben.

private int id;
public int Id {
  get { return id; }
  set { id = value; }
}

Das war selbst mit Makro in der IDE unschön, weil man beim Lesen des Codes weiterhin aufpassen musste, ob da nicht doch was anderes stand als ein 1:1-Zugriff auf das Backing Field. Das hat man auch erkannt und Syntactic Sugar hinzugefügt, so dass man nur noch

public int Id { get; set; }

schreibt und fertig ist. Man hat sozusagen die sinnlose Kapselung syntaktisch entfernt. Intern findet sie weiterhin statt, damit man kompatibel bleibt für die Fälle, in denen man die Kapselung wirklich benötigt.

dedlfix.