MVC für fortgeschrittene PHP-Entwickler [geschlossen]

68

Ich brauche Hilfe von erfahreneren Programmierern. Ich möchte meine MVC-Fähigkeiten verbessern. Aber ich konnte bei Google für MVC kein gutes Tutorial finden. Google gibt immer "MVC für Anfänger".

Ich verstehe, was MVC ist und ich kann es schaffen, aber ich bin nicht erfahren genug, um etwas Praktisches in OOP zu tun.

Wenn jemand ein gutes objektorientiertes Tutorial für MVC kennt, leiten Sie mich bitte an die richtige Stelle - ich suche nach guten Links, Büchern usw.

Ivan
quelle
7
@ Dr.House, tatsächlich ist CI eines von zwei schlechtesten Frameworks in PHP. Zusammen mit Kuchen. MVC oder ein anderes von MVC inspiriertes Entwurfsmuster wird nicht implementiert. Es basiert auf dem globalen Status, enthält PHP4-Artefakte, bricht alle SOLID-Prinzipien und ignoriert SoC vollständig.
Tereško
7
Wenn Sie mehr über MVC CI erfahren möchten, ist dies eine der schlechtesten Entscheidungen. Sie können die besten Antworten dieses Benutzers viel besser lesen .
PeeHaa
4
Fabien Potencier - Symfony ist KEIN MVC-Framework . Frameworks implementieren MVC nicht. Ihr Code tut es.
Tereško
9
@ tereško, Web-Partisan in der Tat! Ich sage dies konstruktiv: Ich stelle fest, dass Ihre Aussagen häufig so aggressiv sind (siehe oben und in Ihren Kommentaren zu Redreggae) und einen Ansatz vertragen könnten, der weniger wahrscheinlich Anstoß erregt. Für jedes erfolgreiche Open-Source-Projekt gibt es Menschen, die ihr Herz und ihre Seele in dieses Projekt stecken, und auch Schweiß und Tränen, sollte ich denken! Symfony 1 war, ob Sie glauben, dass es dem heutigen Entwicklungsstand entspricht oder nicht, ein großartiger Rahmen mit einem geschäftigen Ökosystem. Kurzfassung: Seien Sie positiv kritisch, aber regnen Sie nicht auf die Arbeit der Menschen.
Halfer
8
Löschen Sie erneut die Stimmen. Ja , diese Frage scheint nicht konstruktiv zu sein. Aber nein - es sollte nicht gelöscht werden . Lass es geschlossen - und das ist genug. Das liegt daran: Es enthält eine sehr hilfreiche Antwort.
Alma Do

Antworten:

250

Links, die nur PHP-Materialien enthalten, sind phpzur leichteren Identifizierung mit gekennzeichnet.

Sie können nicht einmal anfangen, sich mit MVC zu beschäftigen, bevor Sie ein umfassendes Verständnis von OOP haben. Das sind OOP Praktiken ( Dependency Injection , Unit - Tests , Refactoring ) Prinzipien ( SOLID , SoC , CQS , LoD ) und die gemeinsame Muster (und nein, Singleton ist kein objektorientiertes Muster).

MVC ist ein fortschrittliches Architekturmuster, das ein solides Verständnis erfordert. Es ist nicht für Anfänger gedacht oder für winzige "Hallo Welt" -Anwendungen . Man verwendet MVC, um der Codebasis zusätzliche Einschränkungen hinzuzufügen, wenn die einfache Einhaltung von OOP-Praktiken zu locker wird, um die Codebasis zu steuern.

Das Beste, was ich Ihnen vorschlagen kann, ist, zunächst Ihr Wissen über objektorientierten Code zu erweitern:

Die beiden obigen Vorlesungen sollten die Grundlagen behandeln. Und dann weiter zu:

Wenn Sie alles verstanden haben, was in dieser Serie erklärt wurde, können Sie Folgendes erweitern:

Außerdem würde ich Ihnen dringend empfehlen, (in dieser Reihenfolge) zu lesen:

PS: Sie können sich auch dieses Buch ansehen (vorsichtig, da es Probleme gibt): Anleitung zu PHP-Entwurfsmustern php

tereško
quelle
Wie die Google Talk diejenigen, weil im Rahmen des Testens. Danke für die Liste.
whereismydipp
@ tereško Dies ist einer der besten Links, die ich noch nie gelesen habe. Vielen Dank für die Links. Ist es möglich, eine Erklärung zum tatsächlichen Grund für Unit-Tests in PHP zu geben? Ich wollte nur wissen, wie wichtig Unit-Tests in Frameworks mithilfe von Tools wie phpUnit oder Jenkins usw. Sind. Können wir das ignorieren? . Ich stelle diese Frage, weil ich beim Schreiben von Code oft das Gefühl habe, Code zu schreiben, um sicherzustellen, dass ich die PHP-Einheit problemlos zum Testen ihrer Funktionalität verwenden kann. Daher ist der Entwicklungsaufwand bei der Verwendung von phpunit höher.
aravind.udayashankara
1
Erstens ist Jenkins ein kontinuierliches Integrationswerkzeug. Anderes Thema. Wie für Unit - Tests - nein, müssen Sie nicht brauchen , es zu benutzen. Es sollte nicht länger dauern, bis Sie Code schreiben, der getestet werden kann. Wenn Sie guten OOP-Code schreiben (kein globaler Status, ggf. Abhängigkeitsinjektion), ist die Möglichkeit, ihn zu testen, nur ein Nebeneffekt. Und wenn Sie Tests schreiben würden, würde dies zusätzliche Zeit erfordern. In dieser Vorlesung wird möglicherweise erläutert, welche Vorteile sich daraus ergeben und wie diese Tests geschrieben werden.
Tereško
4
Wenn Sie ohne Tests entwickeln, sieht der Workflow folgendermaßen aus: Sie schreiben Code, laden ihn hoch, geben Daten in verschiedenen Formularen ein oder klicken herum und sehen, ob sie funktionieren. Dann wiederholen Sie den Vorgang . Es dauert einige Zeit, bis die Daten ausgefüllt sind. Mit Unittests können Sie eine Liste mit Eingaben und erwarteten Ausgaben vordefinieren, damit Sie das Versicherungsformular für 50 Felder nicht zum 100. Mal ausfüllen müssen, nur um zu testen, ob die Validierung für das 32. Feld ordnungsgemäß funktioniert. Und jedes Mal, wenn Sie einen Fehler finden, fügen Sie einfach einen Test mit Daten hinzu, die diesen Fehler und die Ausgabe replizieren, die eigentlich sein sollte.
Tereško
5
Eine andere Sache, die Unit-Tests machen, ist - zu verhindern, dass Sie (oder ein übereifriger Mitarbeiter) Bugfixes im Namen der "Optimierung" entfernen , nur weil jemand nicht weiß oder sich nicht erinnern kann, "warum es diese seltsame dritte Bedingung in der IF-Anweisung gibt?" ". Wenn Sie etwas entfernen, das den Code beschädigt, wird es wahrscheinlich durch Unit-Tests erkannt.
Tereško
1

Was ich Ihnen empfehle, ist ein Buch über Designmuster. Die meisten dieser Bücher behandeln auch das MVC-Muster, und die anderen Muster sind wissenswert, wenn Sie ein vollständiges Framework erstellen.

Ein gutes Buch ist PHP Design Patterns . Ich weiß nicht, ob es auf Englisch existiert, aber ich würde nach anderen Büchern suchen und den Inhalt vergleichen.

bitWorking
quelle
1
Kapitel 4. Vorgestellt werden in diesem Kapitel das "Singleton-Pattern", das "Factory-Method-Pattern", das "Abstract-Factory-Pattern" und das "Prototype-Pattern". .. und im letzten Kapitel geht es um PEAR. Das scheint nicht allzu vielversprechend.
Tereško
@ tereško na und? Sie denken, das Buch ist scheiße, weil es das Singleton-Muster abdeckt?
BitWorking
7
Es ist schwer zu sagen (beachte, dass ich weder gesagt habe, dass es "scheiße" noch herabgestimmt ist). Ich sage nur, dass man vorsichtig sein sollte, wenn man es liest. Vor allem, wenn man die Gesamtmenge an Mist in "PHP-Büchern" zählt.
Tereško