php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 04-07-2014, 15:44
Truncate
 Registrierter Benutzer
Links : Onlinestatus : Truncate ist offline
Registriert seit: Nov 2005
Beiträge: 414
Truncate kann nur auf Besserung hoffen
Standard Fragen zu kleinen MVC-System (speziell Controller)

Hallo,

ich spiele gerade mit dem MVC von "Lemme" rum.

Da sieht's im Controller z.B. so aus:

PHP-Code:
        public function display()
        
        {

            
$view = new View();

            switch(
$this->template)
            
                {
                                
                    case 
'impressum':
        
                        
$view->setTemplate('impressum');
                        
$this->title=" - Impressum";
                        break;
                    
                    case 
'newsletter':
                    
                        
$view->setTemplate('newsletter');
                        
$this->title=" - Newsletter";
                        break;
                    
                    case 
'newsletterdanke':
                    
                        
$view->setTemplate('newsletterdanke');
                        
                        if(!empty(
$this->request['eMail']))
                        {
$view->assign('message''Ihre eMail-Adresse '.$this->request['eMail'].' wurde hinzugefügt.');}
                        else
                        {
$view->assign('message''Es wurden nicht alle Felder ausgefüllt!');}
                        break;
                    
                    case 
'default':
                    default:
                    
                        
$view->setTemplate('default');

                }

    
            
$this->view->setTemplate('layout');
            
$this->view->assign('projekt''Projektname');
            
$this->view->assign('title'$this->title);
            
$this->view->assign('content'$view->loadTemplate());

            return 
$this->view->loadTemplate();

        } 
Dazu ein paar Fragen:

1) Statt die Befehle direkt unter z.B. "impressum" zu schreiben, kann ich diese auch in "classes/impressum.controller.php" auslagern und dann lediglich includen? Ist das dann sozusagen ein "Modul"?

2) Die NewsletterDanke-Verarbeitung dient nur als profane Demo, würde man hier dann normalerweise sowas wie "Validator-Klassen" verwenden? Die gehören dann theoretisch auch in den Controller rein oder?

3) Ins Model kommen dann DB-Zugriff, DB-Funktionen und sonstige Daten (z.B. Arrays mit Versandkosten) rein?

Danke,
Truncate
Mit Zitat antworten
  #2 (permalink)  
Alt 13-07-2014, 16:23
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Truncate Beitrag anzeigen
Hallo,

ich spiele gerade mit dem MVC von "Lemme" rum.

Dazu ein paar Fragen:
Das Lemme Tutorial finde ich ziemlich ungeeigent als Einstieg in MVC. Mich hatte das mal mehr verwirrt als alles andere.

Zitat:
Zitat von Truncate Beitrag anzeigen
1) Statt die Befehle direkt unter z.B. "impressum" zu schreiben, kann ich diese auch in "classes/impressum.controller.php" auslagern und dann lediglich includen? Ist das dann sozusagen ein "Modul"?
In der Regel übenehmen das Autoloader. Außerdem übernimmt das laden von Controllern und das Ausführen von Actions idr. ein Front Controller.
Welches View Template geladen werden soll, sollte eigentlich als Logik in der Controller Action passieren.
Man kann in diesem Fall nicht von einem Modul sprechen, zu modularer Entwicklung gehört weitaus mehr dazu.

Zitat:
Zitat von Truncate Beitrag anzeigen
2) Die NewsletterDanke-Verarbeitung dient nur als profane Demo, würde man hier dann normalerweise sowas wie "Validator-Klassen" verwenden? Die gehören dann theoretisch auch in den Controller rein oder?
Was ist in deinen Augen ein Validator? Normalerweise bringen z.B. Form Klassen ihre eigenen Validatoren mit. Wiederum können aber auch DAOS eigene Validatoren, wie zur Prüfung von Plausibilität enthalten.
Es kann aber auch durchaus in Controller Actions Validatoren geben, es kommt darauf an wo und aus welchem Grund ein Validator benutzt werden muss / soll.

Zitat:
Zitat von Truncate Beitrag anzeigen
3) Ins Model kommen dann DB-Zugriff, DB-Funktionen und sonstige Daten (z.B. Arrays mit Versandkosten) rein?
Um Himmels Willen nein, vollkommen daneben.

Ein Model ist ein Model, dass heißt es bildet einfach nur einen dummen Datencontainer ab, mehr nicht. Warum dumm? Ganz einfach, dass Model weiß nicht woher die Daten kommen, ob aus einer DB, XML, CVC, Excel Datei, JSON oder anderes.
Am besten sichert man jedes Model gegen ein Interface, so kann man Models sehr einfach austauschen. Models haben nur Properties, Setter und Getter Methoden.

Die CRUD (Create, Read, Update, Delete) Methoden gehören dann in ein Repository oder auch DAO genannt.

Der DB Zugriff / Identifikation muss schon viel eher passieren da bist du mit einem Model im MVC noch gar nicht in Berührung gekommen.
Das MVC ist nämlich nur in der Präsentationsschicht einer Anwendung angesiedelt (blöder Begriff, mir fällt grad kein besserer ein).
Um solche Sachen kümmert sich in der Regel eine Application Class.

Sind deine Fragen soweit beantwortet, oder hast du noch Verständnisprobleme, dann immer raus mit den Fragen.

Gruß der Litter
__________________
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.
http://www.lit-web.de
Mit Zitat antworten
  #3 (permalink)  
Alt 14-07-2014, 22:23
Truncate
 Registrierter Benutzer
Links : Onlinestatus : Truncate ist offline
Registriert seit: Nov 2005
Beiträge: 414
Truncate kann nur auf Besserung hoffen
Standard

Zitat:
Zitat von litterauspirna Beitrag anzeigen
Das Lemme Tutorial finde ich ziemlich ungeeigent als Einstieg in MVC. Mich hatte das mal mehr verwirrt als alles andere.
Ich hab auch noch einige andere Tutorials gefunden, nur erschlagen die einen eben gleich mit massig Klassen welche man nicht durchblickt.

Das Prinzip ist mit jedenfalls jetzt halbwegs klar:

.htaccess -> index.php -> Controller -> Requests auswerten

Die View speichert anscheinend nur die Ausgabe und läd die Templates, sonst nichts. Vermutlich müßte die View aber auch zusätzlich eine PDF-Ausgabe können etc.

Die Templates selbst sind "dumm", dort findet man also nur HTML und sonst kaum PHP-Befehle außer vielleicht echo() oder for().

Der Sinn des Models erschließt sich mir aber nach wie vor nicht. Kann man das z.B. an einem Gästebuch-Script erklären?

Zitat:
Zitat von litterauspirna Beitrag anzeigen
In der Regel übenehmen das Autoloader.
Also in der index.php oben schon einen Autoloader mit includen, das Impressum (Klasse) in classes/impressum.php auslagern und dann z.B.

PHP-Code:
case 'impressum':

$bla Impressum::getDaten('telefonnummer'); 
?

Zitat:
Zitat von litterauspirna Beitrag anzeigen
Welches View Template geladen werden soll, sollte eigentlich als Logik in der Controller Action passieren.
Tut es das nicht schon im obigen Script?

Oder meinst Du den Verzicht bei jedem case auf das manuelle Zuweisen durch $view->setTemplate('impressum'); ?

Stattdessen gleich oben pauschal $view->setTemplate($this->template); ?

Das wäre doch aber unflexibel, wenn z.B. bei case 'newsletterdanke' die eMail falsch ist und statt dem Template 'newsletter' eben 'newsletterfehler' eingebunden werden soll.

Zitat:
Zitat von litterauspirna Beitrag anzeigen
Was ist in deinen Augen ein Validator? Normalerweise bringen z.B. Form Klassen ihre eigenen Validatoren mit.
Meinte das so:

PHP-Code:
if(Mail::Check($this->request['eMail'])==true){...} 
anstatt das alles direkt im Controller geprüft wird:

PHP-Code:
if(!empty($this->request['eMail'])){...} 
Zitat:
Zitat von litterauspirna Beitrag anzeigen
Ein Model ist ein Model, dass heißt es bildet einfach nur einen dummen Datencontainer ab, mehr nicht. Warum dumm? Ganz einfach, dass Model weiß nicht woher die Daten kommen, ob aus einer DB, XML, CVC, Excel Datei, JSON oder anderes.
Siehe oben: Das Model macht für mich keinen Sinn Ich würde einfach eine database.class.php laden und dann einfach Abfragen machen. Was für eine Rolle da noch extra das Model spielen soll, weiß ich nicht

Zitat:
Zitat von litterauspirna Beitrag anzeigen
Sind deine Fragen soweit beantwortet, oder hast du noch Verständnisprobleme, dann immer raus mit den Fragen.
Meine Fragen zum Thema PHP & MVC werden wohl nie versiegen
Mit Zitat antworten
  #4 (permalink)  
Alt 26-07-2014, 20:12
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Meine Fragen zum Thema PHP & MVC werden wohl nie versiegen
Nun genau liegt dein eigentliches Problem. Du versuchst MVC in PHP zu denken, warum? Das hat doch erst mal rein gar nichts mit PHP zu tun.

Du musst es im allgemeinen verstehen. MVC an sich ist vollkommen simpel. Ans eingemachte geht es bei dem was drum herum ist. Request, Response, Routing, Event und Hook System etcpp.

Warum macht ein Model keinen Sinn? Was hast du denn am Model nicht wirklich verstanden?

Aber mal kurz erklärt, ein Model ist im Prinzip eine dumme Klasse, welche einfach nur ein Datenmodell darstellt. Es verfügt über Properties sowie Getter und Setter Methoden, dass war es dann auch schon. Am besten sichert man seine Models noch gegen ein Interface, so kann man ganz bequem die Datenquelle von DB auf z.B. Json austauschen wenn es sein muss. Anwendungsbeispiel wäre ein Importer für json zu DB.

Die Logiken, z.B. Plausibilitätslogiken würden dann in eine sogenanntes DAO (Data Access Model), oder manche nennen es auch Repository kommen.

Und wenn man es noch besser haben will, verpackt man das ganze noch schön in einen Service.

Mehr gibt es dazu eigentlich nicht zu sagen.

Egal welches Design - Pattern man einsetzen will, man darf da nie in einer Programmiersprache denken sondern rein in OOP bzw. OOD und dann bekommt alles egal in welcher OOP unterstützenden Sprache unter.

Gruß Litter
__________________
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.
http://www.lit-web.de

Geändert von litterauspirna (26-07-2014 um 20:14 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MVC-Fragen Exotelis PHP Developer Forum 6 05-02-2011 23:40
Fragen zu MVC und Templates phpdeveloper PHP Developer Forum 1 19-05-2007 20:13
USB Controller Oraj Windows (Client/Server) 5 15-04-2004 15:53
Domain Controller TBT Windows (Client/Server) 3 20-02-2004 11:17
Upstream Controller starsk8er Apps und PHP Script Gesuche 1 30-01-2003 16:53

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:47 Uhr.