[PHP] Framework oder nicht?

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Blackb!rd, 17. August 2011 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 17. August 2011
    Framework oder nicht?

    Hey Leute,

    ich arbeite seit Jahren im Bereich der PHP-Programmierung - Bisher immer ohne Frameworks. Ich habe mich auch nie wirklich mit dem Thema beschäftigt. Alles was ich an Funktionalitäten brauchte habe ich mir selbst in eigenen Klassen geschrieben oder diverse fertige Klassen verwendet ( Smarty / FPDF ). Nun arbeite ich and er Anbindung der Google-API im Bereich Kalendar und merke das ZEND dafür z.B. schon fertig implementierte Lösungen bietet.

    Nun komme ich mit meiner Ansicht alles selbst zu schreiben etwas ins wanken. In wie weit lohnt sich der Einsatz von Frameworks? Wie macht sich das in der Last der Scripts bemerkbar?

    Wie gesagt ich habe in dem Gebiet Null Ahnung und wollte mich daher mal auf den aktuellen Stand bringen lassen


    Gruß Blackb!rd
     
  2. 17. August 2011
    AW: Framework oder nicht?

    Hi, dein erster Absatz spiegelt so ziemlich exakt meine Geschichte wider. Irgentwann hatte ich dann auchmal wissen wollen wie es ist mit einem Framework zu arbeiten und habe mir auf PHP Frameworks einfach das rausgepickt was am meisten konnte (Yii).

    Kurz und knapp: Du solltest dir auf jedenfall die Zeit nehmen dich damit auseinanderzusetzen. Es lohnt sich und die Arbeit macht danach viel mehr Spaß.

    Die etwas längere Ausführung: Ich weiß nicht in wie fern du schon gewisse Design Pattern einsetzt bei deiner Entwicklung. Ich habe bei meinem Projekten schnell gemerkt das ich ab einem gewissen Umfang immer sehr viel "gegenchecken" musste (damit ich an einer Stelle nicht etwas anderes mache als an einer anderen). Die Dateien waren eigentlich ziemlich beliebig benannt, es war (für außenstehende) aus dem Frontend heraus nicht ersichtlich an welcher Stelle im Code etwas geändert werden müsste um jetzt eine bestimmte Funktionalität zu ändern.
    Jedenfalls war es nach einer Zeit, egal wieviel Mühe ich mir mit sauberen Code gegeben habe, nicht mehr schön das Projekt zu erweitern/pflegen.
    Das genannte Framework hat mich dabei äußerst stark unterstützt, frei nach dem Motto "Convention over Configuration" - Soll heißen, du KANNST alles Einstellen, wenn du dich jedoch an die Vorgaben hälst MUSST du nichts Einstellen. Das heißt von nun an war für mich klar wie die Dateien zu heißen haben, welche Ordnerstruktur zu Grunde liegt, und durch das MVC Pattern auch wo welcher Code untergebracht werden muss. Der Guide ist zudem äußerst ausführlich und hilfreich.
    Ich benutzte das mittlerweile über 2 Jahre und kann es nur dringenst weiterempfehlen. Keine manuellen (oder in eigene Klassen gepackte) Überprüfungen von Formularfeldern oder sonstigen Eingaben. URL-Management, Datenbank-Abstraktion (Active Record), ... - Gibt unendlich viele Aspekte. Alles ist Modular aufgebaut und kann jederzeit angepasst werden, so flexibel wie wenn man kein Framework benutzen würde.

    Zugegeben kenne ich bloß dieses eine Framework, bin jedoch nicht ansatzweise dazu geneigt zu wechseln weil es absolut für alle Projekte geeignet ist. Habe sogar schon Konsolenprogramme damit umgesetzt - wofür es auch ausgelegt ist.
    Zum Thema Performance: Performance | Yii PHP Framework
    Ohne APC ca. 95 Aufrufe/Sekunde für eine "Hello World" Ausgabe scheinen zwar nicht sehr viel, jedoch ist der Overhead so gering wie Möglich gehalten durch ein durchdachtes Autoloading werden nur die Klassen (lazy-loading) geladen/eingebunden die auch wirklich benötigt werden. Falls es dir aber wirklcih auf Performance ankommt kannst du zeitaufwendige Operationen/Abfragen auch ganz einfach mit Hilfe des Frameworks cachen.
    Mit AP-Cache springen knapp 680 Requests/Second raus für "Hello World".

    Sorry für die WALL-OF-TEXT.

    Nochmal kurz ein Wort zum Zend-Framework. Dort die Klassen kannst du soweit ich weiß größtenteils Modular einbinden ohne auf andere Komponenten des Frameworks zurückzugreifen.
    Sprich: Wenn die eine Google-API Umsetzung anbieten kannst du die benutzen, auch ohne das ganze Framework zu benutzen (zum Beispiel auch mit Yii)

    // Edit: Achso: Ab einem gewissen Umfang sollte die Performance sogar besser sein als wenn man ein großen Projekt ohne durchdachtes autoloading auf die Beine stellt.
     
  3. 17. August 2011
    AW: Framework oder nicht?

    Sagen wir so:
    1. kommt es darauf an, wie umfangreich deine Projekte sind
    2. wie viele Funktionalitäten du bereits mit deinen Klassen abbildest
    3. Frameworks bieten oft schon vorher best practice Lösungen an, die auch gut wartbar sind
    4. ist es sicher nie verkehrt sich mal mit der Materie zu beschäftigen, man lernt nie aus

    Wenn dein Projekt nur klein ist, dann brauchst du wohl kein Framework. Wenn du bei deinem Projekt noch eine Menge machen musst und noch nicht so viel erledigt hast, dann lohnt sich ein Framework schon, wobei ich nicht glaube, dass das Zend Framework die ideale Wahl ist.
    Schau dir mal kleinere Frameworks mit einer guten Community an, z.B.:
    • Yii
    • CodeIgniter
    • FuelPHP
    • Kohana
    • Symfony 2

    greez
     
  4. 17. August 2011
    AW: Framework oder nicht?

    Hab dieses Thema eben oben angepinnt.

    Je nach dem was sich daraus ergibt werd ich dann nen gesonderten Sticky draus machen, aber nur vielleicht

    Meine Meinung zu Frameworks kommt am späten Nachmittag, weil ich da auch ein wenig ausholen möchte und gerade nicht die Zeit dafür hab.
     
  5. 17. August 2011
    AW: Framework oder nicht?

    Da ist natürlich wie Frage wieviel Zeit man so braucht um sich in so einem Framework zurecht zu finden. Ich selbst bin zB keine Leuchte in Englisch. Ich verstehe sämtliche Erklärungen der PHP-Funktionen, aber die Erklärung eines Kompletten "Systems" wird mir mit Sicherheit in Englisch schwer fallen - Gibt es auch gute Deutsche Dokumentationen, bzw Tutorials?

    Was meinst du mit gute Communitys? Aktivität und Weiterentwicklung? Support durch User?


    Gruß Blackb!rd
     
  6. 17. August 2011
    AW: Framework oder nicht?

    Zeit: Von heute auf morgen klappt es nicht. Aber ich denke in 2 Monaten kannst du durchaus das System hinterblickt haben - Jeden Tag ein bisschen inkl. Learning by Doing.
    Wenn du schon Erfahrung mit Design Pattern (MVC) oder auch Active Record hast geht das ganze noch schneller.

    Sprache: Neben Spanisch, Französisch, Chinesisch und Japanisch gibt es den Guide auch in Deutsch The Definitive Guide to Yii | Yii PHP Framework - Es kann sein das mal ein paar Kleinigkeiten nach einem Update noch nicht ganz dem englischen Stand entsprechen - Aber ich würde sagen es ist eine zu 99% vollwertige Übersetzung.

    Es exisitert noch ein Schrit-für-Schritt Tutorial wie man einen einfachen Blog mit Yii erstellt. Dieses gibt es bislang nur in Englisch. Da findest du eben viele praktische Codebeispiele neben den Theroretischen Modellen die im Guide größtenteils anzutreffen sind. Aber auch der sollte mehr als ausreichen um das Framework zu verstehen & verwenden zu können.
     
  7. 18. August 2011
    AW: Framework oder nicht?

    Gibt es noch andere Meinungen zu Frameworks? Ich glaube ja nicht das meine Vorposter hier die Einzigen sind, die Erfahrung damit haben

    Vielleicht wäre es hilfreich ne Sammlung von Frameworks mit Erfahrungsberichten und Bewertungen zu erstellen. So haben es Leute, die dasselbe Problem wie ich haben leichter!


    Gruß Blackb!rd
     
  8. 18. August 2011
    AW: Framework oder nicht?

    Code:
    if ( $mitarbeiter > 1 OR $changes_in_future == true OR $projekt_size_files > 5){
    define('FRAMEWORK', true);
    else{
    define('FRAMEWORK', false);
    }
     
  9. 18. August 2011
    AW: Framework oder nicht?

    Sehr nice! Mit welchem Framework arbeitest du?
     
  10. 18. August 2011
    AW: Framework oder nicht?

    Bisher bin ich noch nicht in der Situation gewesen, ein großes Framework zu benutzen, da die Projekte meist sehr klein waren. Ich setzte immer mein eigenes CMS ein, welches ein paar schöne Klassen mitbringt. Mehr brauch ich nicht.

    Ich würde aber Yii bevorzugen, da es sehr elegant wirkt.
     
  11. 20. Dezember 2011
    AW: Framework oder nicht?

    Ich Missbrauche diesen Thread mal um nachzufragen, was für Frameworks ihr aktuell einsetzt.

    Aktuell stehe ich kurz davor eine Community zu programmieren. Dies Community könnte recht schnell eine ordentliche Größe annehmen! Dazu suche ich ein Framework, dass ich einsetzen kann.

    Was ist mir wichtig?
    1. Übersichtlich Strukturiert
    2. Gute Doku und Tutorials
    3. Es muss aktuell sein! Ich will die neueste Technologie einsetzen! Auf keinen Fall PHP4 und auf jeden Fall so viel Neues wie möglich.
    4. Das DB-Modelling sollte möglichst einfach von der Hand gehen

    Ich weiß, dass sich Punkt 2 und 3 eigentlich nicht vertragen, da neuen Projekten die Zeit für 2. fehlt. Deshalb lege ich meinen Schwerpunkt auch ganz klar auf Punkt 3.

    Präsentiert mir ruhig einfach das neueste was es auf dem Markt gibt und was interessant aussieht. Ich habe genug Erfahrung mit Frameworks, um sie auf mein persönliches Empfinden hin zu testen.

    Ich will praxisnahe Vorschläge, ohne einfach nur die Großen genannt zu bekommen.
    Danke.
     
  12. 20. Dezember 2011
    AW: Framework oder nicht?

    Ich kann nur Stur auf Yii verweisen.
    Zur Zeit befindet sich auch Yii 2.0 in Entwicklung was auf PHP 5.3 aufsetzen soll (Namespace & Co.). Aber davon gibt es noch keine alpha (wobei diese möglicherweise noch dieses Jahr erscheinen soll).
    Es gibt KEIN Projekt (egal welche Sprache) bei dem ich bisher eine solch gelungene Referenz UND Dokumentation gesehen habe.

    Desweiteren ist die Konzeptionierung gelungen. Es gibt KEINE Einschränkung und in jeder (un)erdenklichen Situation bietet mir das Framework die Freiheit die ich brauche.

    Um aber ein bisschen auf deine Prioritäten einzugehen:
    Punkt 1 würde ich zu 100% erfüllt ansehen.
    Punkt 2: Doku TOP, Tutorials häufen sich (Sind aber größtenteils unwichtig wenn man die Doku kennt)
    Punkt 3: Je nachdem was du unter aktuell verstehst. Das aktuelle Framework setzt PHP 5.1.0 voraus, der Nachfolger wie gesagt 5.3.0 (Wann das aber im Produktiveinsatz nutzbar sein wird weiß ich nicht).
    Punkt 4: Was meinst du genau? Die Abbildung der Datenbank auf die Applikation? Sofern du eine relationale Datenbank (Mysql & Co.) einsetzt bietet die Yii eine vollautomatische generierung der Models (MVC) anhand der Datenbankstruktur [inkl. 1:1, und 1:n Relationen, für die n:m Beziehung musst du selbst je eine Zeile Code hinzufügen]. Durch Active Record kannst du dann später auch problemlos die Datenbank untendrunter tauschen (Mysql zu Oracle oder Postgres) falls es zu Performanceproblemen o.ä. kommen sollte (strikte Nutzung von Active Record vorausgesetzt)

    Falls ich nicht mit Yii so unheimlich zufrieden wäre, würde ich mich als Alternative in Symfony einarbeiten. Das macht mir auch einen sehr aufgeräumten Eindruck und nutzt auch neuste "Technologie". Habe jedoch bisher keinen Grund gefunden zu wechseln.
     
  13. 21. Dezember 2011
    AW: Framework oder nicht?

    Was hälst du persönlich von Codeigniter? Ich muss zugeben, dass Tutsplus allein der Grund war, das Framework zu nehmen, da dort ein Workshop zu eben diesem Angeboten worden ist. Ich bin bei diesem Framework geblieben, damir anschließend die Doku sehr gefallen hat und mir alle weiteren Fragen beantworten konnte. Ich werde mir jetzt aber mal Yii anschauen, nachdem du davon so gut gesprochen hast ^^
     
  14. 21. Dezember 2011
    AW: Framework oder nicht?

    Ich bin mal so frei:

    CodeIgniter ist veraltet.

    Es will zwar nicht mehr kompatibel mit PHP4 sein, nutzt aber Unmengen an altem und schlecht optimierten PHP4 Code.

    Beispiele:
    • Sogut wie alle Klassenvariablen werden mit "var" deklariert.
    • Kein "public/protected/private" bzw. keinerlei PHP 5 features.
    • Häufiger Einsatz von @
    • Einsatz von "AND" und "OR" statt "&&" und "||" -> in der Masse langsamer
    • Ständige Verwendung von Objektreferenzen

    Man merkt ganz deutlich, dass das Framework aus PHP4 Zeiten stammt und daher langsam aber sicher von PHP5 Servern verschwinden sollte.

    Wenn du von dir selbst aber sagt, dass dich neue Features und APIs eh nicht interessieren, dann kann dir alles, was ich eben beschrieben hab im Grunde egal sein
     
  15. 21. Dezember 2011
    AW: Framework oder nicht?

    Ich hatte noch in meinem Ursprungsbeitrag überlegt zu erwähnen ob ich von CodeIgniter und CakePHP abraten soll (letzteres ist ja eh PHP 4 kompatibel) - Habe mich aber dann doch dagegen entschieden.

    Beruflich arbeite ich zur Zeit an einem Projekt welches CodeIgniter einsetzt. Ich kann jetzt nicht alles schlechte daran auf das Framework schieben, da auch das Projekt selbst nicht unbedingt nach gutem Standard entworfen wurde.

    Murdoc hat die Differenzen innerhalb des Frameworks grade aufgezählt - Da habe ich noch garnicht reingeschaut. Aber nach außen hin fehlt mir jede Menge Funktionalität und Unterstützung die mir Yii von Haus aus mitbringt.

    Beispiele (ALLES was hier steht müsstest du nochmal selbst bestätigen lassen, da ich mich noch nicht als zu sehr damit auseinander gesetzt habe und lediglich davon ausgehe dass es der bisherige Projektleiter anders gemacht hätte, wenn möglich):
    • In CodeIgniter fehlt eine ordentliche Möglichkeit Daten in einer Tabelle darzustellen. Also Daten die in einem array abgelegt wurde oder aus einer Datenbankabfrage (vom Model) kommen. Das äußert sich daran dass dann eine Tabelle mit "<td>" und "</td>" im Controller durch irgentwelche Schleifen zusammengesetzt werden. Äußerst unschön.
    • Grade wenn du von einer "großen" Community sprichst kommt mir sofort der Gedanke "Performance" in den Kopf. Da fehlt es CodeIgniter an einer guten Umsetzung bzgl. Caching. Soweit ich das überblicke bietet es lediglich an ganze Seiten für eine bestimmte Zeit zu cachen. In Yii kannst du ganz leicht auch nur Teile des Codes cachen (Datenbankabfragen z.B.) und dir auch noch aussuchen mit welcher Cache Komponente (APC, MemCache, ...)
    • Internationalisierung: Für dich ggf. erstmal uninteressant. Wir müssen das Projekt nun auch in Deutsch verfügbar machen - Auch da müssen wir mit eigenem Code nachhelfen da CodeIgniter nur die Übersetzung von lokalen "Sprachelementen" erlaubt (also solche die nicht aus der Datenbank abgefragt werden). Ist zwar jetzt auch kein riesen Aufwand, aber schöner wäre es wenn es schon mit dabei wäre.
    • Ebenfalls aus dem Projekt: Der Kollege hat an vielen Stellen die jQuery tabs (www.jqueryui.com) verwendet. Auch hier ist der Controller damit beschäftigt mittels Schleifen die Inhalte der Tabs zusammenzubasteln. Yii integriert jQuery von Haus aus und bietet sämtliche UI Elemente als Widgets an (=> Im View muss nur noch eine Datenquelle [z.B. Array] angegeben werden und die Tabs werden automatisch generiert)
    • CSS und JS Dateien die (fast) immer benötigt werden liegen in einem eigenen View. Auch da finde ich den Ansatz in Yii besser, dort lassen sie sich dynamisch durch einen Methodenaufruf in die aktuelle Seite einbinden.
    • Das Layout (Also Header, Menü, Footer, "CONTENT") wird äußerst kompliziert zusammen gebaut. Es würde jetzt zu lange dauern zu beschreiben wie genau. Jedoch ist auch hier Yii sehr viel einfach gestrickt indem es sogenannte "layouts" von Haus aus kennt (also den eigentlichen Content kann man wahlweise in einem beliebigen layout rendern lassen)

    Vielleicht sind einige von diesen Punkten nicht wichtig für dich, aber ich habe sie in Yii kennen und schätzen gelernt und würde persönlich nicht mehr auf CodeIgniter umsteigen. [Übrigens habe ich auch den Projektleiter davon überzeugen können, was allerdings jetzt auch nichts mehr bringt )

    Mir fallen grade noch so viele andere Sachen ein. Ich fände es jedenfalls sinnvoll wenn du dir Yii mal anschaust. Wenn es dir nicht zusagst und du mit CodeIgniter gut zurecht kommst (und auch der Überzeugung bist dass das bei einem großen Projekt so bleiben wird), dann kannst du ja immer noch dabei bleiben.

    // Edit:
    Eine ganz wichtige Sache noch: In unserem Projekt kommen wenige (bis keine) Formulare vor, daher hab ich sie vergessen: Yii bietet eine sehr gute Formularvalidierung an.
    Beispiel: Anmeldeformular - Dort soll der Benutzer Name, Passwort (2x) und E-Mail eingeben.
    In Yii kannst du ein entsprechendes "Form Model" anlegen in dem du diese Attribute deklarierst ($username, $password, $password_repeat, $email) und dann als Regel angibst wie diese validiert werden sollen. Also bspw.: (Prosa) "Benutzername muss mind. 3 Zeichen lang sein, max 32. Passwort muss mit Password_repeat übereinstimmen, E-Mail muss eine gültige E-Mail adresse sein (MX-Lookup inkl. falls gewünscht)" usw. Du kannst auch gegen reguläre Ausdrücke matchen usw.
    Jetzt kannst du zusätzlich noch einen "Schalter" umlegen (AJAX) und das ganze wird direkt live beim Benutzer angezeigt. Also zum Beispiel "Benutzername ist vergeben" oder sowas direkt nachdem er ihn bei sich eingegeben hat. Tolle Sache!
     
  16. 21. Dezember 2011
    AW: Framework oder nicht?

    Okay vielen dank für die beiden Antworten, bin da jetzt um einiges schlauer. Der Punkt allein, dass Codeigniter veraltet ist, veranlasst mich schon zum umdenken, jedoch möchte ich 1-2 Punkte aufgreifen, die Coks angesprochen hat. Es gibt eine html table class -> Link, auch gibt es eine formular Validierung, sowie einen Formulargenerator -> Form Helper | Validation Helper. Auch gibt es eine Klasse für Javascript Frameworks, wobei dort kein bestimmtes vorgegeben wird, sofern ich das gelesen habe. Beim cachen wirds da komplizierter ^^ Jedoch glaube ich, dass du mit deinen Punkten sowieso generell recht behalten wirst (Link)

    Das oben genannte soll nur als Information dienen. Ich schau mir jetzt mal Yii an und vorallem Zend, da ich damit anscheinend bald wieder arbeiten darf ^^ Danke euch beiden =)
     
  17. 21. Dezember 2011
    AW: Framework oder nicht?

    @Chieftrain: Das Kohana PHP Framework basiert auf CI, nur dass es aktuell ist und auch gut gemacht ist. Mir persönlich gefällt es nur leider nicht mehr so gut wie vorher (Version 2). Deswegen wollte ich mal ein neues Framework ausprobieren.

    Yii gefällt mir persönlich auch nicht so gut. Aber Symfony 2 sieht in der Tat ganz interessant aus, da es auch schon namespaces nutzt. Ich werde mal ein kleines Test-App machen.

    Kennt jemand denn noch einen Insider, oder sieht in einem bestimmten Framework die Zukunft? Vielleicht Flow3?
    Mich interessiert eure Meinung...
     
  18. 22. Dezember 2011
    AW: Framework oder nicht?

    Ich persönlich benutze CodeIgniter, habe das ganze noch mit PyroCMS ergänzt und bin super zufrieden mit.

    Ich bin ebenfalls dabei eine Community auf die Beine zu stellen, und die saubere Struktur, die CodeIgniter und PyroCMS mitbringen vereinfacht das ganze um ein Vielfaches. Man Braucht im Endeffekt nur Module zu schreiben und diese lassen sich superleicht verwalten/erweitern.

    Wobei ich mich nach dem Durchlesen der Beiträge wohl auch mal mit Yii auseinander setzen werde.

    mfg
    Atkaz
     
  19. 6. Januar 2012
    AW: Framework oder nicht?

    Ich arbeite für eine Agentur im Bereich Neue Medien und wir entwickeln seit Jahren aufwändige Internetpräsenzen für namhafte Kunden. Bisher sind wir, bis auf wenige Ausnahmen, stets ohne PHP-Frameworks ausgekommen.

    Der Vorteil einer Template-Engine nur mit PHP(denn PHP bietet quasi eine eigene Template-Engine) ist, dass das Programm sehr schlank, effizient und keineswegs redundant ist!
    Viele PHP-Frameworks sind meist nur meta-Sprachen, welche Pseudocode in PHP Code übersetzen. Hier gilt also, nur übersetzt!
     
  20. 6. Januar 2012
    AW: Framework oder nicht?

    also Zend und YII nutzen auch PHP als template-sprache, es sei denn du definierst einen eigenen renderer.

    lediglich smarty kommt mit einem eigenen parser daher. und wenn ich parser schreibe, dann meine ich ernsthaft einen parser auf basis von lemon-php inkl. lexer um - und jetzt kommts - php-code im template auszuführen.

    beispiele?
     
  21. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.