Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Kommunikation zwischen Modulen

Einklappen

Neue Werbung 2019

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

  • #16
    @dr.e.
    Ich würde hier jedoch nicht bei jeder Software von dieser Notwendigkeit sprechen
    Da hast du sicherlich recht, aber ich hatte das Ziel, was komplexes zu schreiben, um bei großen Projekten eine Hilfestellung zu haben. Mein Ziel war es, mich selbst herauszufordern und was eigenes schreiben und schließlich damit ein aktuelles Projekt fertig zu stellen.

    Ich fand den Ansatz mit dem Pagecontroller, den du ja in manchen Threads (u.a. erweiteres Controlling MVC) empfohlen hast, gut und habe das so implementiert. Ich denke, dass die einzelheiten dazu nicht so wichtig sind.

    @BlackScorp
    danke sehr für deinen ausführlichen Beitrag!
    https://github.com/Ma27
    Javascript Logic is funny:
    [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

    Kommentar


    • #17
      @Ma27

      ich würde, heut zu tage, mich garnicht mehr um die GUI kümmern, wenn deine anwendung wunderbar auf der CLI ebene funktioniert, kann man dann die GUI später drauf programmieren. Generell habe ich erfahrung gemacht, dass wenn du ein Frontend entwickler an den code lässt, wird er dich mit fragen zulöchern ala "und wie verändere ich diesen button" oder "und was wenn ich eigene css datei verwenden will" oder "hier hätte ich aber lieber dass die form in einem dialog erscheint" usw usw.. aus diesem grund, versuche ich aktuell, die gesamte anwendung als eine art API zu generieren so dass die GUI erst später erstellt wird, dabei kann der frontend entwickler selber alles bestimmen, er muss ledeglich wissen, welche parameter die api erwartet
      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


      • #18
        @BlackScorp
        ich würde, heut zu tage, mich garnicht mehr um die GUI kümmern, wenn deine anwendung wunderbar auf der CLI ebene funktioniert
        Da hast du, denke ich, recht. Mit dem Thema CLI muss ich mich mal beschäftigen.

        die gesamte anwendung als eine art API zu generieren
        Stellt sich nur die Frage, wo die API (sind doch die ganzen Schnittstellen) implementiert wird.

        Schönen Abend noch, Ma27
        https://github.com/Ma27
        Javascript Logic is funny:
        [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

        Kommentar


        • #19
          Zitat von Ma27 Beitrag anzeigen
          Stellt sich nur die Frage, wo die API (sind doch die ganzen Schnittstellen) implementiert wird.
          ich weis nicht genau was du damit meinst

          also zum allgemeinen grundverständnis. deine Anwendungsbibliothek hat für jede funktion einen eigenen Request(aka. Application Request), dieser Request wird an einen Interactor übergeben, der Interactor macht intern irgendwas und liefert dir einen Response zurück. Dem interaktor übergibst du zusätzlich Kokrete klassen, für diese klassen definierst du Interfaces und mit typehints stellst du sicher dass der Interaktor das Richtige erhalten hat.


          Auf deine Bibliothek, packst du ein Framework drauf, dieser kann zum Beispiel routen definieren und bei bestimmten routen einen Controller und Action aufrufen, in den Actions und anhand deines HTTP Requests, erstellst du einen Application Request und führst den interaktor aus. Den Application Response verarbeitest du mit eine Templatengine und gibst einen HTTP Response aus.

          Das Ganze sieht dann konkret, in etwa so aus(kann sein dass sich in halben jahr meine meinung sich wieder ändert)

          https://github.com/Opentribes/Core/b...elper.php#L108

          die PlayerRepository an der Stelle, ist eine art "Behälter" für daten, ich sage behälter weil es keine Rolle Spielt ob sich die Daten nun in einer CSV Datei befinden oder in einer Datenbank oder sogar ein Array

          Wenn du halt die GUI, Die Datenbank, Das Framework ignorierst und sich nur auf die Funktionalitäten konzentrierst, kommste schneller zum ergebnis.

          Sowas wie "Wie kann ich es so machen dass ich in meiner Seite eine login form einblende" sollte dich garnicht interessieren, darum kümmerst du dich, wenn es soweit ist.

          Ich zb entwickle aktuell die Bibliothek ohne webserver, nur mit einem bash script

          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]

          Kommentar


          • #20
            @BlackScorp

            Wenn du halt die GUI, Die Datenbank, Das Framework ignorierst und sich nur auf die Funktionalitäten konzentrierst, kommste schneller zum ergebnis.
            Ich schätze mal, dass du von der Clean Code Architektur sprichst. Jetzt weiß ich auch, was du gemeint hast .
            Ich hab mir mal die eine Graphik angesehen.

            Die Funktionalitäten sind dann wohl die zweite Schicht.
            Wenn ich das richtig verstehe (wenn ich nur Mist schreibe, dann verbessere mich bitte) dann sind die "Funktionalitäten" sowas wie Manager Klassen.
            Ein Beispiel: ein Login läuft über nen Manager, der sich um das überprüfen und den Login kümmert, während dann die Klasse aus der Codebibliothek eine Art Adapter darstellt. Dann wäre der Manager doch die eigentliche Funktionalität.
            Soweit hätte ich das dann verstanden.
            Ich zerbreche mir im Moment nur den Kopf, was ich mit der Schicht im Kern des Diagrams anfangen soll...

            Schönen Tag noch,
            Ma27
            https://github.com/Ma27
            Javascript Logic is funny:
            [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

            Kommentar


            • #21
              Entities sind die Datenobjekte, mit denen die Use Cases (Manager, Application Business Rules, wie auch immer man es nennen will) arbeiten.

              Diese tragen keine Logik, bzw. nur sehr begrenzte, und sind eigentlich nur zum "halten" von Daten da. Z.B. "Car", "User" oder "City". Beispiele: (ich nehm jetzt meine, da BlackScorp wie ich das sehe noch keine Entities hat im OpenTribes) https://github.com/ApoY2k/mages-bg/t...Mages/Entities
              [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


              • #22
                @Ma27

                soweit haste alles verstanden, die Entities sind wie Apo2k schrieb, einfache objekte, die haben methoden um eigenschaften zu setzen und eigenschaften zu lesen, beim setzen der Eigenschaft, bestimmen die Entities, was sie erhalten dürfen. Das was quasi i.d.r der Validator macht, übernehmen die Entities.

                Die Entities erhälst du von den Repositories, deine Repositories müssen immer einen Array von Entities oder nur eine Entity zurückgeben.

                Die Interaktoren laden aus Repositories die Entities, verändern diese und Speichern es in den Rrepositories wieder

                als Biespiel
                https://github.com/Opentribes/Core/b...ractor.php#L32

                $playerRepository findet mir eine Entity mit dem usernamen xyz

                die Entity wird mit dem Request abgegliechen, und wenn alles soweit ok ist, kommt es in den Response. Im Framework, habe ja den Response und kann dann zb die Player Entity in session speichern
                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


                • #23
                  @BlackScorp, @ApoY2k,

                  danke, ich glaub, das mit den Entities hab ich auch verstanden
                  https://github.com/Ma27
                  Javascript Logic is funny:
                  [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

                  Kommentar


                  • #24
                    kannst ja in den #com.php.de channel in irc.euirc.net joinen.. da kann man über spezialfälle reden
                    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


                    • #25
                      Oder du registrierst die Klassen irgendwo, und die einzelnen Module prüfen, ob die Klasse vorhanden ist.
                      Wenn ja, kann man ja auf statische Methoden oder so zugreifen...

                      Kommentar


                      • #26
                        Oder du registrierst die Klassen irgendwo, und die einzelnen Module prüfen, ob die Klasse vorhanden ist.
                        Wenn ja, kann man ja auf statische Methoden oder so zugreifen...
                        Du meinst eine Art registry bzw. object pool?
                        https://github.com/Ma27
                        Javascript Logic is funny:
                        [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

                        Kommentar


                        • #27
                          Zitat von Ma27 Beitrag anzeigen
                          Du meinst eine Art registry bzw. object pool?
                          nein.. das kling eher nach einem Autoloader
                          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


                          • #28
                            das geht natürlich auch
                            https://github.com/Ma27
                            Javascript Logic is funny:
                            [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

                            Kommentar

                            Lädt...
                            X