Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] DI vs Convention

Einklappen

Neue Werbung 2019

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

  • [Erledigt] DI vs Convention

    Hallo leute,

    ich arbeite mich aktuell etwas in Silex ein, silex Application ist ja ein DI Container, soweit ich es verstanden habe, kann man einen Controller injezieren und ihm einen "Alias" namen vergeben

    PHP-Code:
    //Controller ist verfügbar über $app['posts.controller']
    $app['posts.controller'] = $app->share(function() use ($app) {
        return new 
    PostController();
    });
    //controller mit action an route binden
    $app->get('/posts.json'"posts.controller:indexJson"); 
    ist alles schön und gut, somit kann ich zb Controller aus anderen Projekten herausnehmen(wenn die keine abhängigkeiten haben) und dann ersetzen.

    in den Beispielen beschrieben, kling das alles eindeutig aaber, was wenn man sagen wir 20, 30 oder 50 controller hat? dann muss man jeden controller injezieren.. ich bin nun ein "Convention over Configuration" fan ich fände es persönlich viel besser , controller einfach in einen ordner abzulegen und anhand definierter url schema die controllers/actions aufrufen.

    eine idee die ich hatte, wäre einen FileIterator am anfang und alle controller aus einem definierten ordner in die applikation injezieren, nur würde man dadurch jetzt unnötige operation durchführen, nur weil ich zu faul bin die controller einzeln zu injezieren.

    wie löst ihr das Problem? gibts da vielleicht einen eleganten weg in silex controller anhand des Requests zu injezieren?

    viele Grüße
    apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

  • #2
    Haben Deine Controller denn keine Abhängigkeiten?
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      naja doch, aber ich injeziere die ja nicht, sondern verwende die einfach, habe halt in manchen controllern viele use statments
      apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

      Kommentar


      • #4
        Warum ist es so kompliziert, 50 controller zu definieren? Machst du ja nicht auf einmal. Je weiter das Projekt vorranschreitet, desto mehr kommen hinzu, das ist ja ein kontinuierlicher Prozess.

        Ich z.B. finde es wesentlich angenehmer, wenn sehr wenig "Magie" in einem Skript steckt, die ich nicht direkt einsehen kann. Wenn du alle Controller fein säuberlich definierst, sieht man auf einen Blick in deine app.php, wer für welchen Request zuständig ist, ohne sich erst durch deine (vielleicht nichtmal vorhandene) Doku zu wälzen um herauszufinden, woher auf vollkommen versteckte Art und Weise die Controller kommen.
        [URL="http://goo.gl/6Biyf"]Lerne Grundlagen[/URL] | [URL="http://sscce.org/"]Schreibe gute Beispiele[/URL] | [URL="http://goo.gl/f2jR7"]PDO > mysqli > mysql[/URL] | [URL="http://goo.gl/jvfSZ"]Versuch nicht, das Rad neu zu erfinden[/URL] | [URL="http://goo.gl/T2PU5"]Warum $foo[bar] böse ist[/URL] | [URL="http://goo.gl/rrfzO"]SQL Injections[/URL] | [URL="http://goo.gl/Q81WJ"]Hashes sind keine Verschlüsselungen![/URL] | [URL="http://goo.gl/2x0e2"]Dein E-Mail Regex ist falsch[/URL]

        Kommentar


        • #5
          jo und ich habe mit Trainmaster gechattet und verstanden was nikosch sagen wollte mit der abhängigkeit, ich wollte halt den üblichen fehler begehen und $app an alle controller automatisch vergeben.. quasi app als globaler speicher für alles nutzen muss ich wohl weniger faul sein und doch alle controller definieren
          apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

          Kommentar


          • #6
            Was hält dich auf im Bootstrap einen Container zu instanziieren der im Constructor einen DirectoryIterator / RecursiveDirectoryIterator in ein iterator_to_array stülpt und wiederum ein Iterator-Interface besitzt das verfügbare Controller gegen eine Controller-Map wirft und über einen ControllerInjectionServiceProvider wiederum via iterator_to_array im register-event den Murks als shared Lambdas in den Silex-Container wirft ?

            Das kannst du sogar cachen.
            [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

            Lädt...
            X