Moderation: Thema ausgegliedert aus diesem Thread um nicht zwei Themen zu vermischen.
Ich habe es zwar schon so oft geschrieben, aber hier sind noch einmal ein paar der Punkte die an Contao 3 fürn Eimer sind.
* Falsche Verwendung von Namespaces
* Autoloader verwendet kein PSR Standard
* Cache kopiert einfach ganze Dateien ineinander welches zu PHP Fehlern durch "cannot redeclare" führt
* Pfad-Mapping funktioniert auf dne meisten Shared-Hostern nicht richtig, indexierung schlägt oft Fehl und ist stellenweise inkonsistent
* Models führen zu Datenverlust!!!!!!!!!
....
Ich möchte noch Kurz auf den letzten Punkt eingehen, die Models. Weil du ja meintest das sieht alles sehr sauber und ordentlich aus. Kleines Beispiel dazu welches mich beim ersten Debuggen fast 2 Tage gekostet hat, da es in absolutem brainfuck ausartet:
Contao 3 hat Models eingeführt, welche jedoch nur optional sind. sprich, es ist nachwievor noch erlaubt und wird auch gemacht, das daten via plain query modifiziert werden. Profis sehen schon worauf ich hinaus will.
Nehmen wir mal die tl_member Tabelle her. Du hohlst du dir daten eines Mitglieds als $objMemberModel und arbeitest damit. Danbn hohlt sich ein anderes Modul die daten via "SELECT * FROM tl_member WHERE id=?" . Jetzt hast du 2 mal den gleichen Datensatz. Du änderst das Model ab und machst $objMemberModel->save(); Das SChreibt dir dir Daten zurück in die Datenbank. Dein Query beinhaltet aber immer noch die alten Daten und killt beim zurückschreiben alle daten des Models. Ergo ist die änderung weg. Wenn du jetzt aber als Query sagst, ich lade die daten noch mal neu, so fickt dich der Query cache, weil du erst wieder den alten Datensatz bekommst. Ergo, du hast wieder einen Datensatz verloren. Dann wirds aber lustiger, ein Model ist nicht "unique". Das heißt, wenn 2 Extensions das gleiche Model holen, werden von Contao 3 2 models erstellt, welche beide bei einem Update aber NICHT gesynct werden. Also wenn $obj1->save() macht und dann $obj2->save(); killt $obj2 die Daten aus $obj1. Ergo, schon wieder Datenverlust.
Ich habe diesen bug bereits so oft erklärt, dass es jetzt eigentlich jeder wissen sollte. Auch Leo Feyer weiß von diesem Bug, sieht es aber nicht als Problematisch an. Er meinte nur: "müssen wir uns mal anschauen". Hä, Datenverlust? Ja ne, hat ja Zeit ...
Dann kommen natürlich noch so dinge hinzu, das Contao 3 permanent dinge Nacharmt welche viel besser in der SPL drin sind. Bsp simulieren Collections in Contao 3 das iterieren über den Datensatz, jedoch implementieren sie nicht "iteratable". Warum? Keine ahnung ...
....
Lesezeichen