pl: MVC in PHP-Projekt

Beitrag lesen

Es ist jedenfalls nicht hilfreich, einen konkreten Request auf ein abstraktes Gebilde, wie es ein Interface ist, routen zu wollen, beziehungsweise den Vorgang so zu beschreiben. Ein Interface beschreibt nur beispielsweise Methodensignaturen, hat aber keinen Code, der irgendwas tun könnte. Also kann man den Request nicht zu einem solchen routen, sondern eher zu einer Klasse.

Richtig. URL => Klassenbindung. Schrieb ich doch.

Und: Die Subklasse implementiert ein Interface. Schrieb ich auch. Und das die Klassenbindung einer Konfiguration bedarf, sollte eigentlich auch klar sein oder ? Was daran verstehst Du nicht? Wenn Du serialisierte Hashes als Monolithen bezeichnest, dann darf ich meine Konfiguration auch Routing-Table nennen. Oder auch Projektverwaltung => maschinenlesbar und trotzdem kein XML ;)

Auf meiner Domäne /framework kannst Du das bis ins kleinste Detail nachlesen. Mein Perl-Framework, ja, das hatte ich auch mal in PHP gebaut. Ist aber in Perl alles einfachr zu machen, weil Perl eben nicht so pragmatisch ist. Ich hab mir von PHP auch einiges abgeguckt, kannste glauben. I.d.R. das, was man besser nicht machen sollte. Aber das Entity Attribute Value Model (EAV) zuerst bei Magento gelesen, hats mir wirklich angetan.

Bei mir gibts eine Methode: $self->eav('title','Neuer Titel für die Seite'); gibt mir den Vollzugriff auf alle Attribute welche fürn URL konfiguriert sind.

Per Konfiguration zugewiesene Interfaces definieren anonyme Methoden, in Perl sin das einfach nur Code-Referenzen. In Perl muss eine Klasse, die ein IF implementiert, nicht JEDE IF Methode definieren im Gegensatz zu PHP. Mein Trick in Perl: Vorschalten einer Funktion execute() die prüft per UNIVERSAL::can ob eine Methode definiert ist, wenn ja, liefert can() den Code der ausgeführt wird. so gibt es kein Problem mit redefined bei per Konfiguration zugewiesenen Interfaces.

In meinem FW werden IF-Methoden, bis auf eine Ausnahme nicht vererbt. Und im Unterschied zu PHP auch nicht implementiert. Perl ist eben doch ein bischen anders und am Ende wird vieles, ja sehr vieles um einiges einfacher als in PHP (hier müsste JEDE IF Methode definiert sein).

Ach: was mir Andere schon als MVC verkauft haben, Lach :)