Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP MVC Struktur und Aufbau der Klassen

Einklappen

Neue Werbung 2019

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

  • PHP MVC Struktur und Aufbau der Klassen

    Hallo,

    ich möchte gerne bei meinem neuen PHP Projekt, die Objektorientierte Programmierung sauber und schön gestalten. Jedoch kamen mir bei der Umsetzung ein paar Fragen auf. Vielleicht könnt ihr mir weiterhelfen?

    Model:
    PHP-Code:
    <?php
    class Member{
        private 
    $id;
        private 
    $name;

        
    //Getter
        
    public function getID(){
            return 
    $this->id;
        }

        public function 
    getName(){
            return 
    $this->name;
        }

        
    //Setter
        
    public function setID($id){
            
    $this->id $id;
        }

        public function 
    setName($name){
            
    $this->name $name;
        }
    }
    ?>
    DAO Klasse:
    PHP-Code:
    <?php
    class MemberDao{
        
        public function 
    __construct(){
            
    // Connection to DB
        
    }

        
    // CRUD functions
        
    public function add(Member $member){

        }

        public function 
    read(){

        }

        public function 
    update(Member $member){

        }

        public function 
    delete(Member $member){

        }

        
    // other functions
        
    public function readByID($id){

        }

        public function 
    readByName($name){

        }
    }
    ?>
    View:
    PHP-Code:
    <?php
    include 'member.class.php';
    include 
    'memberDao.class.php';

    class 
    View{
        public function 
    display(){
            
    // Read GET & POST
            
    $id $_GET['id']

            
    // Calling DAO's
            
    $memberDao = new MemberDao();
            
    $member = new Member();

            
    $member $memberDao->readByID($id);

            
    // Display on page
            
    echo $member->getName();
            echo 
    $member->getID();

        }    
    }
    ?>
    Die View darf ja nichts von dem Model wissen, jedoch benutze ich sie in der View. Wie kann ich dem entgegen wirken?
    Kann man die POST und GET Variablen in der View auslesen und sie dann, wie ich es in meinem Beispiel mache, an die DAO weiter geben?

    Was haltet ihr von meinem MVC Design?


    Mfg
    PapstBenR

  • #2
    Die View darf ja nichts von dem Model wissen, jedoch benutze ich sie in der View. Wie kann ich dem entgegen wirken?
    Kann man die POST und GET Variablen in der View auslesen und sie dann, wie ich es in meinem Beispiel mache, an die DAO weiter geben?
    Die POST und GET Variablen sollten doch eigentlich an den Controller geraten, dieser verarbeitet den Request und ruft die Daten des Models ab und gibt diese durch an das View, oder liege ich da falsch mit meiner Auffassung von MVC ?

    Kommentar


    • #3
      was mit spontan auffällt, du nutzt kein DI, dies ist aber für OOP fast unverzichtbar. Es darf nicht in jedem Model eine neue Connection erstellt werden, sondern es muss eine bestehende mit einem DI genutzt werden.
      brauchst also noch min. die DI und am besten noch einen ModelsManager.
      Controller und View musst du trennen. Und vor den Controller gehören eigentlich noch ein Router und ein Dispatcher, oder eine Klasse, die beides macht. Für die View eine Templateengine, twig, smarty, was auch immer dein Framework dir bietet.
      Es hilft, sich in ein MVC Framework einzuarbeiten. Zend, Symfony, Phalcon (mein Favourit).
      Fatal Error: Windows wird gestartet

      Wie administriert man ein Netzwerk: Beispiel

      Kommentar


      • #4
        Da es gerade angesprochen wurde lass ich gleich mal den Link hier: http://fabien.potencier.org/article/...ency-injection finds bis jetzt gut beschrieben und les Abends immer mal wieder ein bisschen weiter

        Die View darf ja nichts von dem Model wissen, jedoch benutze ich sie in der View. Wie kann ich dem entgegen wirken?
        Kann man die POST und GET Variablen in der View auslesen und sie dann, wie ich es in meinem Beispiel mache, an die DAO weiter geben?
        Wie schon gesagt wurde, Models die du in der View brauchst - Datencontainer, quasi - sollten vom Controller aus an die View übergeben werden.
        In deinem Entwurf übernimmt die Klasse View Aufgaben des Controllers bzw. du hast gar keinen Controller, weil der mit in der View steckt.

        Was haltet ihr von meinem MVC Design?
        Eine Frage bei der man schnell als schlechter Mensch dasteht.
        Ich würde dir auch empfehlen dir mal die Frameworks anzusehen, vielleicht mal ein kleines 1-Wochen Projekt durchziehen damit du siehst was dir noch fehlt, woran du gar nicht gedacht hast - ohne zu sehr ins Framework einzutauchen und dich in den spezifischen Funktionen zu verlieren.
        Wenn du dann ein bisschen weiter bist, setzt du dieses 1-Wochen Projekt nochmal ohne Framework um, schnappst dir ein Github-Repository und präsentierst es uns. Dann kann man wirklich konstruktiv über die Struktur diskutieren.
        [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
        [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

        Kommentar

        Lädt...
        X