Ankündigung

Einklappen
Keine Ankündigung bisher.

Sinnvolle Ornderstruktur

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sinnvolle Ornderstruktur

    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.

  • #2
    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]

    Kommentar


    • #3
      ich hab ja zend angesehn, allerdings gefällt mir nicht, dass die namen so lang werden fürs namespacing.

      Kommentar


      • #4
        Zitat von Phpyton Beitrag anzeigen
        ich hab ja zend angesehn, allerdings gefällt mir nicht, dass die namen so lang werden fürs namespacing.
        Dann ordne sie doch so an, wie sie dir gefallen?
        [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

        Kommentar


        • #5
          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


          • #6
            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


            • #7
              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


              • #8
                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
                Do
                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


                • #9
                  Ok, und dann benutzt man einen FrontController, um die Töpfe zusammenzubringen?

                  Kommentar


                  • #10
                    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


                    • #11
                      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


                      • #12
                        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

                        LG
                        https://github.com/Ma27
                        Javascript Logic is funny:
                        [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

                        Kommentar


                        • #13
                          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


                          • #14
                            Zitat von Fuel Beitrag anzeigen
                            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.
                            was ja dank user defined vendor directory settings mithilfe von composer auch nicht allzu schwer ist..

                            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


                            • #15
                              Dankeschön.

                              Kommentar

                              Lädt...
                              X