Ankündigung

Einklappen
Keine Ankündigung bisher.

Simple MVC Framework: Wohin gehört TableBuilder? Model, Controller?

Einklappen

Neue Werbung 2019

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

  • Simple MVC Framework: Wohin gehört TableBuilder? Model, Controller?

    Hallo Forum,

    ich lerne soeben PHP und Simple MVC Framework.

    Ich würde gerne in meiner Anwendung einmal MySQL-Tabellen erstellen lassen, sofern noch nicht vorhanden. Dafür gibt es hier was fertiges: http://simplemvcframework.com/docume.../table-builder

    Nur würde ich gerne wissen, an welcher Stelle das gehört? Soll ich dafür extra ein Model oder Controller schreiben?

    EDIT: Okay, es gehört in ein Model. Würdet ihr ein eigenes Model für das Tabellendesign erstellen oder erstellt ihr die Tabellen irgendwo in einem anderem Model, das sowieso genutzt wird, zum Beispiel "Person"?

  • #2
    Wie du richtig erkannt hast, gehört es ins Model.
    Nach neuen Trends wird immer mehr in das Model ausgelagert und die Controller so smart wie möglich gehalten.

    Ich würde das in eigene Models packen, da das im normalen Anwendungskontext nicht direkt anwendung findet (idR. nur einmalig).
    Andererseits kann man auch damit argumentieren, dass es in das Model sollte, das für die Tabelle "zuständig" ist.
    "Software is like Sex, it's best if it's free." - Linus Torvalds

    Kommentar


    • #3
      Ja, da hast du Recht. Wie kann ich in PHP denn verhindern, dass dieses Model nur einmal in einem bestimmten Kontext aufgerufen wird? Momentan würde ich dieses Model auf der index.php aufrufen, allerdings würde es ja immer geschehen, wenn man auf die Startseite kommt. Oder wie wäre es mit einer Installationsseite wie bei Joomla oder Wordpress?

      Kommentar


      • #4
        Wieso willst du denn verhindern dass das Model nur einmal in einem bestimmten Kontext aufgerufen wird?

        Ich glaube kaum, dass du bei jedem Seitenaufruf deine Tabellen neu erstellen möchtest

        Genau, der Sinn hinter sowas ist das einfache Deployment der Anwendung, sprich eine automatische Einrichtung der benötigten Datenbankstruktur.
        Also gehört sowas in eine Installation.
        Die Installation realisierst du auch einfach über einen ganz normalen Controller und Actions.
        "Software is like Sex, it's best if it's free." - Linus Torvalds

        Kommentar


        • #5
          Sorry, ich meinte es genau im Gegenteil. Ich meinte, dass ich mehrmaliges Aufrufen verhindern will. Ich habe bisher nur Java gelernt. Wenn da die Desktopanwendung startet, kann ich solche einmaligen Angelegenheiten in einer Funktion machen, die dafür von Haus aus vorgesehen ist.

          Vielen Dank bisher.

          Kommentar


          • #6
            Du musst das einfach nur irgendwo reinmachen wo du es nur einmal verwendest, das wäre dann z.B. eine Installation.
            Diese sperrst du dann eben, sobald installiert wurde, bzw. überprüfst ob System schon installiert ist.

            "Software is like Sex, it's best if it's free." - Linus Torvalds

            Kommentar


            • #7
              Zitat von 147852369 Beitrag anzeigen
              Sorry, ich meinte es genau im Gegenteil. Ich meinte, dass ich mehrmaliges Aufrufen verhindern will. Ich habe bisher nur Java gelernt. Wenn da die Desktopanwendung startet, kann ich solche einmaligen Angelegenheiten in einer Funktion machen, die dafür von Haus aus vorgesehen ist.

              Vielen Dank bisher.
              Also wir machen ds z.B. so. In der Entwicklung lassen wir unsere Tabellen über einen Unit Test erstellen (Java Hibernate).

              Wenn ein Kunde sein System bekommt, haben wir eine Installation, zwar läuft das alles über einen Java Rest Webservice, aber das Prinzip ist das selbe. Die Installation muss expliziet aufrufen und hat mit dem Standardaufruf der Anwendung nicht zu tun.
              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              [URL]http://www.lit-web.de[/URL]

              Kommentar


              • #8
                Ich mache sowas mit einem MigrationManager. Heisst, wenn ich egal wo meine Projekte via GIT und Composer auf den aktuellen Stand bringe, dann hängt unten am Composer noch ein Script dran, das die Migrations-Skripte ausführt. Heisst, dass alle neuen Änderungen am Datenbankschema dadurch abgeglichen werden und so immer den gleichen Stand haben, den der (PHP-)Code auch hat.

                composer.json
                Code:
                {
                    ...
                    "scripts": {
                        "post-autoload-dump": [
                            "php mig.php"
                        ]
                    }
                }

                Kommentar

                Lädt...
                X