Ich sitze schon seit vielen Stunden an diesem "ach-so-einfachen" Problem. Und zwar versuch ich auf Papier eine sinnvolle Ordnerstruktur anzulegen, die ich mir erst einmal ausdenken will, bevor ich mich dranhocke und code. Es geht darum, dass ich eine "gute" Struktur finde, in die man über Jahre hinweg Klassen und Zeugs einfach irgendwo reinklatschen kann, ohne gleich alles umändern zu müssen. Aber es tuen sich mir nur Probleme auf. Es ist eine klassische PHP-MVC-Anwendung, die zudem viel mit JS arbeitet. Aus dem Netz konnte ich auch wirklich keine hilfreichen Dingens finden. Könnt ihr mir vllt sagen, wie eure Struktur so aussieht, denn ihr hab sicher über die Jahre hinweg Erfahrungen gesammelt, wie man am Besten beginnen sollte. Eines meiner Probleme ist, dass die Anwendung mit einem Autoloader kompatibel sein soll, aber nicht Pfade im Klassennamen haben soll, zudem will ich nicht einen Ordner überfrachtet haben, wie classes, in den man alles objektorientierte hineinklatscht.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Sinnvolle Ornderstruktur
Einklappen
Neue Werbung 2019
Einklappen
X
-
Stichworte: -
-
Schau dir doch einfach mal an, wie die Frameworks so aufgebaut sind.
Zum Thema Autoloader: Schau dir den PSR-4 Autoloader-Standard an, da muss der Namespace nicht (komplett) auf eine Pfadstruktur abgebildet werden (bzw. umgekehrt).[QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]
-
Phpyton
ich hab ja zend angesehn, allerdings gefällt mir nicht, dass die namen so lang werden fürs namespacing.
Kommentar
-
Zitat von Phpyton Beitrag anzeigenich hab ja zend angesehn, allerdings gefällt mir nicht, dass die namen so lang werden fürs namespacing.[SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]
Kommentar
-
Phpyton
Das Problem ist, dass ich "dicke" Ordner vermeiden will, sprich, ich habe Frameworks gesehen, die alles in einen Ordner classes hauen, und auskennen tut sich dann niemand mehr. Dann kann ich auch gleich alles in einen Ordner hauen. Ich wollte aber von euch sog. best-practices wissen, z.B. in der Verwendung mit MVC.
Kommentar
-
Komponentisierung erübrigt großzügiges Orderstruktur-Design.
Du kannst hingehen und deine MVC Geschichte in Module splitten und diese dann mit Composer zusammenführen, so hällst du auf den Ordner Ebenen alles klein und übersichtlich und baust am Ende nur auf einer kleineren Ebene alles zusammen.[URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].
Kommentar
-
Phpyton
Ok, also meinst du sollte ich anstatt drei Ordner (je Model, View, Controller) in die ich z.B. AModel.php, AView.php, und AController.php reinlege, eigene Ordner machen wie A und dort die Teile reinlegen?
Kommentar
-
Das was ich meine ist das was Symfony Bundles repräsentieren.
http://symfony.com/doc/current/cookb...practices.html
Dort geht es nicht draum, den gesamten Sourcecode in isolierte Bereiche wie Models, Views und Controller zu gliedern sondern Module zu generieren die entsprechende Funktionalität dem Projekt hinzufügen.
Was du also tust ist nicht alles in einen Topf werfen, sondern mehrere Töpfe zu füllen, die du dann zusammenstellst und nutzt.
Don't
Code:project\ models\ blog.php comments.php articles.php views\ blog-overview.phtml blog-entry.phtml article.phtml controller\ blog.php article.php
Code:project\ vendor\ ...
Code:bundle:blog models\ blog.php views\ blog-overview.phtml blog-entry.phtml controller\ blog.php depends on: bundle:comment
Code:bundle:comment models\ comments.php
Code:bundle:article models\ article.php views\ article.phtml controller\ article.php
[URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].
Kommentar
-
Phpyton
-
Mehr oder Weniger ( Bootstrapper fügen zusammen was zusammen gehört, welche nicht unbedingt teil eines realen Front Controller Prozesses sein müssen ).
Im Silex Microframework sind die Service Provider bspw. Bootstrapper der einzelnen Services, das selbe Prinzip kannst du dir auch auf Bundle-Ebene vorstellen.[URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].
Kommentar
-
Phpyton
OK. Hab deine Architektur soweit zu Herzen genommen, jedoch frage ich mich, wie ich das mit den css-dateien, bildern, ... händeln soll. Soll ich diese ebenfalls in die jeweiligen "bundles" reinlegen, oder macht man das seperat. Bitte Pseudocode wie oben, wenn möglich, damit du die Struktur ein bisschen beschreibst.
Kommentar
-
im Bundle gibt es einen Ordner Resources, da kommen die rein. Dann kannst du alle CSS Dateien via Assetic in das Template einbinden und hast dann eine große CSS File
http://symfony.com/doc/current/cookb...anagement.html
Wenn du alle CSS Dateien in eine Datei mergen willst, muss der Debugging mode für Assetic abgeschaltet werden: https://github.com/symfony/symfony-s...config.yml#L34
LGhttps://github.com/Ma27
Javascript Logic is funny:
[] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN
Kommentar
-
Ich merke schon die Begeisterung über die Symfony Odnerstruktur und die Modularisierung, aber was ist an dem unterteilen in Controllers/, Models/ und Views/ verkehrt?
Bei einem größeren Projekt wird das sicher unübersichtlich, aber finde es trotzdem bequemer als das, was Symfony macht, nachzubauen.
Generell würde ich aber einen Ordner lib/ anlegen, wo alle deine Klassen sauber in Unterordner eingeteilt werden. Musst dann nur noch alle Klassen sauber einbinden.
Kommentar
-
Zitat von Fuel Beitrag anzeigenIch merke schon die Begeisterung über die Symfony Odnerstruktur und die Modularisierung, aber was ist an dem unterteilen in Controllers/, Models/ und Views/ verkehrt?
Bei einem größeren Projekt wird das sicher unübersichtlich, aber finde es trotzdem bequemer als das, was Symfony macht, nachzubauen.
Generell würde ich aber einen Ordner lib/ anlegen, wo alle deine Klassen sauber in Unterordner eingeteilt werden. Musst dann nur noch alle Klassen sauber einbinden.
Warum Composer ? Komponentisierung for the win.[URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].
Kommentar
Kommentar