Aufbau eines eigenen PHP-Frameworks

8

Ich bin daran interessiert, mein eigenes PHP-Framework für meinen persönlichen Gebrauch zu erstellen, um mein Coding-Leben einfacher zu machen. Ich mache das, weil ich es ziemlich (irgendwie) benutze, um jetzt zu php, und kann nicht scheinen, irgendwelchen Rahmen zu verwenden.

Ich habe eine Idee, viele Funktionen in einer .php-Datei zu machen. Wie ich begonnen habe, habe ich für die Funktion "Mail senden" (für meine Verwendung) vereinfacht:

%Vor%

Dies wird dann in einem Kontaktformular verwendet:

%Vor%

Diese Mail-Funktion funktioniert für mich.

Allerdings bin ich mir nicht sicher, ob dies richtig ist, um einen solchen Rahmen zu schaffen. Ich habe Klassen und Objekte für PHP untersucht, aber ich kann sie nicht verstehen, da es kein verständliches / einfaches Tutorial gibt.

    
ryryan 29.09.2010, 16:09
quelle

10 Antworten

33

Die Leute werden Ihnen sagen, dass Sie nicht Ihr eigenes Framework schreiben sollten, um ein existierendes zu verwenden. Hör nicht auf sie. Es ist eine gute Lernerfahrung und hilft Ihnen, die Konzepte zu verstehen, die andere Frameworks für Sie sinnvoller machen.

Ich persönlich musste zwei Dinge besser verstehen, bevor ich in der Lage war, die Frameworks anderer zu benutzen (und natürlich meine eigenen zu schreiben):

  1. OOP
  2. MVC

Ich habe Tage damit verbracht, jedes OOP Tutorial auf PHP und jede Tutorial / Wiki Seite auf MVC zu lesen. Dann habe ich als Lernerfahrung meinen eigenen Rahmen geschrieben. Dann habe ich von meinen Fehlern gelernt und ich habe von vorne angefangen und ein anderes Framework geschrieben. Ich habe wahrscheinlich 5 Versionen geschrieben. Dann habe ich beschlossen, den Code-Zünder auszuprobieren. Nach all dem Lesen und Üben habe ich es endlich verstanden.

Seitdem habe ich nur die Frameworks anderer Leute benutzt.

    
Galen 29.09.2010, 16:17
quelle
6

Wie einige andere hier, sehe ich nur positive Gewinne von einem unerfahrenen Benutzer, der versucht, ein Framework zu schreiben. Wenn sie bestehende Optionen als Modelle betrachten und tatsächlich versuchen, den neuen Code zu verwenden und so seine Schwächen zu identifizieren, um sie zu beheben, kann dies ein guter Weg sein, um schnell Wissen zu entwickeln. Das heißt, für einen sehr neuen Benutzer würde ich vielleicht zweimal darüber nachdenken, ihn in einer Produktionsanwendung zu verwenden. Andererseits wird es wahrscheinlich keinen großen Unterschied machen, ob der Hauptcode der Anwendung von demselben Benutzer geschrieben wird.

Nachdem das gesagt wurde, ist ein Framework von Natur aus sehr architektonisch und daher vielleicht nicht der beste Ort, um loszulegen. Eine einfache Utility-Code-Bibliothek ist viel besser und genau das, was das OP tut (abgesehen von Terminologieproblemen). Gut für ihn.

Um immer wieder auf den bestehenden Rahmenzug zuzuspringen, wenn es darum geht, ernst zu werden, habe ich diesbezüglich tief verwurzelt. Vor allem gibt es keinen perfekten Rahmen oder sogar einen Rahmen, der für jeden Zweck mehr als nur marginal ist. Die meisten Allzweck-Frameworks sind übermäßig komplizierte Performance-Faultiere im Vergleich zu Code, der für seinen Zweck manuell abgestimmt wurde. Für ein erfahrenes Team, das an komplexen, realen Anwendungen arbeitet, ist ein GP-Framework oft eine schlechte Idee. Aus diesem Grund bevorzuge ich bei solchen Frameworks solche wie Zend, bei denen Sie die Funktionalität auswählen können, die Sie brauchen, ohne mit beiden Füßen hineinspringen zu müssen.

Noch kritischer, in den 30 Jahren, in denen ich Software entwickle, habe ich viele Frameworks gesehen, sogar solche mit einer 100% igen Marktsättigung und der Unterstützung von großen Anbietern sterben einfach . Wenn das passiert, sind Entwickler gestrandet. Und nein, Open Source kann dieses Problem nicht beheben. Wenn viele erfahrene Menschen Jahre brauchen, um einen großen Rahmen zu entwickeln und dann zu pflegen, wie soll ein kleines Team innerhalb eines Unternehmens - oft mit nur ein oder zwei wirklich erfahrenen Leuten - das Projekt realistisch aufrechterhalten, wenn es in Ungnade fällt und fängt an zu sterben? Dies geschieht auch bei kleineren Code-Projekten: Man beachte den Todeszustand, in dem sich viele ehemals beliebte PEAR-Bibliotheken jetzt befinden.

    
mr. w 29.09.2010 17:05
quelle
2

Es kann nützlich sein, sich dieses einfache PHP-Framework von Tyler Hall für einige Ideen anzuschauen.

>

Viel Glück!

    
Galwegian 29.09.2010 16:13
quelle
2

Wenn Sie ein Framework für den persönlichen Gebrauch verwenden möchten, sollten Sie eines der etablierten Open-Source-Angebote wie CakePHP , symfony , Zend oder CodeIgniter . Diese Frameworks wurden jahrelang von talentierten Webentwicklern entwickelt und getestet und werden Ihre Anforderungen wahrscheinlich mehr als erfüllen. Die einzige Zeit, in der Sie Ihr eigenes Framework erstellen sollten, ist für Bildungszwecke oder wenn die vorhandenen Frameworks nicht Ihren Anforderungen entsprechen . Keine Notwendigkeit, das Rad neu zu erfinden.

Von wikipedia :

  

Der Rahmen zielt darauf ab, die   Overhead mit Common verbunden   Aktivitäten im Web durchgeführt   Entwicklung. Zum Beispiel viele   Frameworks bieten Bibliotheken für   Datenbankzugriff, Templating-Frameworks   und Session Management, und sie oft   Förderung der Wiederverwendung von Code.

Genau das wollen diese Frameworks erreichen und sind dabei recht erfolgreich.

Indem Sie diese verwenden, werden Sie auch lernen, ihre Lösungen zu schätzen, sowie zu verstehen, wie sie OOP für die Web-Entwicklung verwenden und Ihr Wissen als Entwickler erweitern.

    
webbiedave 29.09.2010 16:19
quelle
2

Andere haben Ihre Framework-Frage beantwortet (bauen Sie nur etwas für den Lernwert, ansonsten lernen Sie, eines der besser existierenden ausgereiften Frameworks und Bibliotheken zu verwenden), aber ich möchte nur auf eine kleine Nit mit Ihrem Code hinweisen, der ganze Sinn von ein Sigil $ vor der Var ist, dass Sie leicht tun können

%Vor%

statt

%Vor%     
Pat 29.09.2010 16:22
quelle
1

Das wird vielleicht zu hart, aber: Überlege dir nicht, ein eigenes Framework zu erstellen, wenn du die objektorientierte Programmierung nicht vollständig verstehst. Das OOP-Wissen wird sich aus Ihrer prozeduralen Programmierung entwickeln, wenn Sie mehr Erfahrung sammeln.
Das Erstellen einer PHP-Datei, die Ihre häufig verwendeten Funktionen enthält, ist jedoch eine gute Idee, und ich würde sagen, gehen Sie dafür. Aber nenne es keinen Rahmen:)

    
Karel Petranek 29.09.2010 16:14
quelle
1

Bewundernswert wie es sein mag, wenn Sie nicht einmal wissen, was die grundlegenden Grundlagen für den Aufbau eines Frameworks sind, insbesondere Patterns, und nicht vollständig in OOP verankert sind und es komfortabel schreiben. Wie erwarten Sie dann Ihr Ziel zu erreichen? Du wirst nicht unbedingt viel lernen, wenn du selbst Code schreibst, dh wenn du 40 Mal schlechten Code schreibst, lehrt er dir nichts (das ist übrigens keine persönliche Kritik an dir), sondern indem du anderen Code liest, der beides sein wird Gut, schlecht und gleichgültig, dann wirst du lernen.

    
PurplePilot 29.09.2010 16:16
quelle
1

Normalerweise hat ein Framework ein bestimmtes Ziel. Ein Framework kann ein CMS, eine 3D-Engine, ein Datenzugriffssystem usw. unterstützen. Häufig werden mehrere Frameworks zusammen verwendet, um das ultimative Ziel zu erreichen, z. B. die Verwendung von Spring, Hibernate und JavaEE zum Erstellen eines Java-basierten Frameworks Webanwendung.

Wie Sie es sehen, sammeln Sie alle Ihre Lieblingsfunktionen in einer einzigen Datei (oder gruppieren Sie sie nach Funktionalität in verschiedene Dateien?). Das kann nützlich sein, aber ich würde dies noch nicht als Rahmen bezeichnen. Es ist wirklich eine Bibliothek. Wenn all Ihre Funktionen die E-Mail-Funktionalität unterstützen sollen, dann lernen Sie OOP kennen und erstellen Sie ein Framework, dessen einziges Ziel es ist, eine einfach zu bedienende Oberfläche für ausgefallene E-Mail-Funktionen bereitzustellen.

    
quelle
1

Ich würde auch auf einen anderen Rahmen wetten. Es gibt einfache mit großen Gemeinschaften. Sie können sich selbst auf dreierlei Weise helfen: Beginnen Sie mit vielen beigetragenen Modulen / guter Struktur, lesen Sie qualitativ hochwertigen Code und holen Sie sich Unterstützung von einer großen Community.

Hier gibt es eine Liste mit vielen gängigen Frameworks und Vergleiche - phpframeworks.com. Ich könnte Ihnen auch CodeIgniter empfehlen - gut für Anfänger, ziemlich einfach und gleichzeitig MVC.

    
Mario Peshev 29.09.2010 16:19
quelle
1

Dies beantwortet nicht Ihre Framework-Frage, aber wenn Sie Folgendes verwenden:

%Vor%

und:

%Vor%

Personen werden versuchen, zusätzliche E-Mail-Header in Ihr $ from-Feld einzufügen, indem Sie

posten %Vor%

zu Ihrem $ von Feld.

Ganz zu schweigen von dem Problem, dass Leute es nur für Spam verwenden, wenn Sie ihnen ein $ _POST ['to'] - Feld erlauben.

    
SomeGuy 24.06.2011 07:25
quelle

Tags und Links