MB: PHP Index in MVC

Ich will meine Indexseite in MVC Paradigma aufspliten in derart wie pl es auch schon angesprochen hat.

class Index()
{
  public function __construct() {
    Head::__toString();
    Header::__toString();
    Meta::__toString();
    Nav::__toString();
    Article::__toString();
    Footer::__toString();
  }
}

new Index();

eine referenzierende statische Klasse

class Head {
  public funktion __toString() {
    /* ... */
  }
}

Ach ja ich hab im Webspace die Ordner so aufgelidert:

controler
config
-language
-message
-statement
model
view
-factory

Ich hab bei den Großmeistern wie Zend Framework gespickt aber die Masse, die zusätzlichen Skriptsprachen und die Zeitknappheit der Aubildung machen es mir schwer durchzusteigen.

  • Der ewige Kontextwechsel zwischen HTML und PHP in \View\Klassen machen mir zuschaffen
  • Die sprache und konfigurationen wie das was im <head>-Tag geschiet spielt auch ne rolle

Ich kann dem nur schwer herr werden :/. Einen Tipp?

vlg MB

  1. Ich will meine Indexseite in MVC Paradigma aufspliten in derart wie pl es auch schon angesprochen hat.

    class Index()
    {
      public function __construct() {
        Head::__toString();
        Header::__toString();
        Meta::__toString();
        Nav::__toString();
        Article::__toString();
        Footer::__toString();
      }
    }
    
    new Index();
    

    Ich mach das über Methoden:

    1. header(); # HTTP
    2. start_html(); # Kopfbereich mit Metadaten
    3. menu(); # Navigation
    4. bodybuild();
    5. end_html(); # Footer

    Diese Methoden laden eigene Templates und werden stets in derselben Reihenfolge aufgerufen sofern text/html ausgegeben wird. Bis zur Ausgabe wird alles gepuffert und wenn bis dahin keine Exceptions gefallen worden sind, wird der ganze Kram zur Response.

    MfG

    1. Hi pl,

      Ich mach das über Methoden:

      1. header(); # HTTP
      2. start_html(); # Kopfbereich mit Metadaten
      3. menu(); # Navigation
      4. bodybuild();
      5. end_html(); # Footer

      Diese Methoden laden eigene Templates und werden stets in derselben Reihenfolge aufgerufen sofern text/html ausgegeben wird. Bis zur Ausgabe wird alles gepuffert und wenn bis dahin keine Exceptions gefallen worden sind, wird der ganze Kram zur Response.

      nach deinem beispiel wollte ich es machen. Aber auch klassen orientiert.

      1. Hi pl,

        Ich mach das über Methoden:

        1. header(); # HTTP
        2. start_html(); # Kopfbereich mit Metadaten
        3. menu(); # Navigation
        4. bodybuild();
        5. end_html(); # Footer

        Diese Methoden laden eigene Templates und werden stets in derselben Reihenfolge aufgerufen sofern text/html ausgegeben wird. Bis zur Ausgabe wird alles gepuffert und wenn bis dahin keine Exceptions gefallen worden sind, wird der ganze Kram zur Response.

        nach deinem beispiel wollte ich es machen. Aber auch klassen orientiert.

        Ja freilich: Die Klasse steht ja über der Methode. Nur eine Klasse allein bewegt halt nix, da muss schon eine Methode her. Konkret: Obenstehende Methoden (und Weitere ) sind Interface-Methoden die in der jeweiligen an den URI gebundenen Response-Klasse überlagert werden können.

        Wozu die Klasse da ist: Die definiert bspw. die Herkunft fürn Body/Template und überschreibt ggf. die IF-Methoden. Tipp: Mach das IF so, dass geprüft wird, ob die jeweilige Methode definiert ist.

        MfG

        # Ausschnitt ausm Framework try-Block
            # call the interface
            $ro->execute('init');
        
            if( $ENV{REQUEST_METHOD} && $ENV{REQUEST_METHOD} eq 'PUT' ){
                $ro->execute('putcontrol');
            }
        
            if($ro->param()){ $ro->execute('control') }
            else{ $ro->execute('browse') }
            $ro->execute('trailer');
        
         # execute() macht die Prüfung
        

        Und zum Schluss wird alles mit my $message_body = $ro->{CONTENT} || $ro->start_html.$menu.$simlinks.$ro->bodybuild.$ro->end_html; zusammengepappt. Fertig ;)

        Von text/html abweichende Inhalte liegen in {CONTENT}

        1. Hallo pl,

          Diese Methoden laden eigene Templates und werden stets in derselben Reihenfolge aufgerufen sofern text/html ausgegeben wird. Bis zur Ausgabe wird alles gepuffert und wenn bis dahin keine Exceptions gefallen worden sind, wird der ganze Kram zur Response.

          nach deinem beispiel wollte ich es machen. Aber auch klassen orientiert.

          Ja freilich: Die Klasse steht ja über der Methode. Nur eine Klasse allein bewegt halt nix, da muss schon eine Methode her. Konkret: Obenstehende Methoden (und Weitere ) sind Interface-Methoden die in der jeweiligen an den URI gebundenen Response-Klasse überlagert werden können.

          Ich kenne mich nicht aus und ich habe leider gottes nicht die Zeit mich mit routing zu befassen :/. Ich würde es gerne tun. Nach der Ausbildung stelle ich mich gern unter eure fittiche :).

          Es ist Ausgesproche wichtig und unabdingbar das die Fachinformatiker sich mit BWL befassen. BWL steht ja auch an erster Stelle bei der Entwicklungsarbeit. Ohne BWL ist ein Informatiker kein Informatiker. Ich nenne das IHK Sarkasmus

          vlg MB

          1. hi,

            Ich kenne mich nicht aus und ich habe leider gottes nicht die Zeit mich mit routing zu befassen :/.

            
            ; static routes public
            
            [/kapital]
            class = Folder
            title = Alles über den Kapitalismus
            
            [/marx.html]
            class = HTMLfile;
            file = marx.html
            parent = /kapital
            
            [/engels.html]
            class = HTMLfile;
            file = engels.html
            parent = /kapital
            title = Friedrich Engels Leben und Wirken
            
            [/mail.html]
            class = Feedback
            title = Schreib mal wieder
            

            so kannste das Routing organisieren: URL => class und die class weiß dann anhand der Konfiguration wo das Template (file = ...) zu finden ist usw.

  2. Tach!

    Ich will meine Indexseite in MVC Paradigma aufspliten in derart wie pl es auch schon angesprochen hat.

    Die Index-Seite in einem MVC-Framework ist üblicherweise keine Bestandteil des MVC-Musters. Bevor man die Steuerung an einen MVC-Controller übergeben kann, muss erstmal der Request soweit ausgewerter werden, dass man weiß, welcher Controller anzusteuern ist. Oder auch mehrere, wenn man seine Seite in Komponenten aufgeteilt hat und jeder Teil von einem eigenen MVC-Triplet behandelt wird.

    Für die Index-Seite ist meist ein Front-Controller zuständig, der diverse anderen Komponenten heranzieht, wie beispielsweise einen Router, der die URL auswertet und die Route zum MVC-Controller findet.

    class Index()
    {
      public function __construct() {
        Head::__toString();
        Header::__toString();
        Meta::__toString();
        Nav::__toString();
        Article::__toString();
        Footer::__toString();
      }
    }
    
    new Index();
    

    Ein Konstruktor ist zum Initialisieren der Klasse gedacht, nicht zum Erledigen der gesamten Arbeit. Für das einfache Beispiel reicht auch eine Funktion statt einer Klasse.

    Ach ja ich hab im Webspace die Ordner so aufgelidert:

    controler
    config
    -language
    -message
    -statement
    model
    view
    -factory
    

    Kann man machen, machen andere auch. Ist aber aus meiner Sicht nicht besonders toll. Diese Gliederung fasst Dinge anhand von äußerlichen Eigenschaften zusammen. Das ist in etwa so, wie wenn man in einer Firma die Leute nach Haarfarben sortiert die Büros zuweist. Ich finde besser, wenn nach fachlichen Gesichtspunkten zusammengefasst wird. Dann kann man in einem Ordner alles finden und muss sich nicht die Teile in verschiedenen Ordnern zusammensuchen, wenn man an einer bestimmten fachlichen Anforderung arbeitet.

    Ich hab bei den Großmeistern wie Zend Framework gespickt aber die Masse, die zusätzlichen Skriptsprachen und die Zeitknappheit der Aubildung machen es mir schwer durchzusteigen.

    Es gibt auch kleinere Beispiele für MVC-Frameworks.

    • Der ewige Kontextwechsel zwischen HTML und PHP in \View\Klassen machen mir zuschaffen

    Es gibt da zwei Möglichkeiten. Die eine ist, die Ausgabelogik (bedingte Teile, Schleifen, Kontextbeachtung) in der View mit PHP zu erledigen. PHP ist eine Template-Sprache und kann das alles selbst.

    Die andere ist, ein Template-System zu haben, das die Logik in eigene Platzhalter verpackt. Aber wie auch immer, du kommst um Ausgabelogik nicht drumherum und musst immer zwei verschiedene Syntaxsysteme mischen.

    • Die sprache und konfigurationen wie das was im <head>-Tag geschiet spielt auch ne rolle

    Was willst du damit sagen?

    dedlfix.

    1. Hi dedlfix,

      Die Index-Seite in einem MVC-Framework ist üblicherweise keine Bestandteil des MVC-Musters.

      für mich als greenhorn und kleingeist ergibt das Sinn.

      Bevor man die Steuerung an einen MVC-Controller übergeben kann, muss erstmal der Request soweit ausgewerter werden, dass man weiß, welcher Controller anzusteuern ist. Oder auch mehrere, wenn man seine Seite in Komponenten aufgeteilt hat und jeder Teil von einem eigenen MVC-Triplet behandelt wird.

      Wenn ich Zeit habe was ich nicht habe befasse ich mich intesiv damit

      Für die Index-Seite ist meist ein Front-Controller zuständig, der diverse anderen Komponenten heranzieht, wie beispielsweise einen Router, der die URL auswertet und die Route zum MVC-Controller findet.

      routing kenne ich mich nocht nicht aus kombiniert mit .htaccess wenn ich mich nicht irre.

      Ein Konstruktor ist zum Initialisieren der Klasse gedacht, nicht zum Erledigen der gesamten Arbeit. Für das einfache Beispiel reicht auch eine Funktion statt einer Klasse.

      Ich habs in Java 8 MVC abgeguckt

      Ich finde besser, wenn nach fachlichen Gesichtspunkten zusammengefasst wird. Dann kann man in einem Ordner alles finden und muss sich nicht die Teile in verschiedenen Ordnern zusammensuchen, wenn man an einer bestimmten fachlichen Anforderung arbeitet.

      du meinst also so inetwa?:

      controler
      - config
      - language
      message
      - language
      model
      - statement
      - language
      view
      - language
      - pages
      - factory (bzw. Templates)
      

      Ich hab bei den Großmeistern wie Zend Framework gespickt aber die Masse, die zusätzlichen Skriptsprachen und die Zeitknappheit der Aubildung machen es mir schwer durchzusteigen.

      Es gibt auch kleinere Beispiele für MVC-Frameworks.

      kannst du mir referenzen geben

      • Der ewige Kontextwechsel zwischen HTML und PHP in \View\Klassen machen mir zuschaffen

      Es gibt da zwei Möglichkeiten. Die eine ist, die Ausgabelogik (bedingte Teile, Schleifen, Kontextbeachtung) in der View mit PHP zu erledigen. PHP ist eine Template-Sprache und kann das alles selbst.

      Die andere ist, ein Template-System zu haben, das die Logik in eigene Platzhalter verpackt. Aber wie auch immer, du kommst um Ausgabelogik nicht drumherum und musst immer zwei verschiedene Syntaxsysteme mischen.

      so ungefär habe ich das mit factory gemacht. Dennoch finde ich es blöd.

      • Die sprache und konfigurationen wie das was im <head>-Tag geschiet spielt auch ne rolle

      Was willst du damit sagen?

      z.B. Sprache, Autor, Erstellungsprogramm, Suchwörter, Erstellungsdatum, usw. im <meta>- und <title>-Tag.

      vlg MB

      1. Hallo MB,

        • Die sprache und konfigurationen wie das was im <head>-Tag geschiet spielt auch ne rolle

        z.B. Sprache, Autor, Erstellungsprogramm, Suchwörter, Erstellungsdatum, usw. im <meta>- und <title>-Tag.

        Du meinst die entsprechenden Elemente. Lediglich das meta-Element ist leer, deshalb stehen die Informationen als Attribut im Tag. Siehe http://selfhtml.apsel-mv.de/tag-element/tag-element-attribut.html

        Als Informatikstudent sollte man sich der korrekten Begriffe bedienen.

        Bis demnächst
        Matthias

        --
        Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
        1. Moin,

          • Die sprache und konfigurationen wie das was im <head>-Tag geschiet spielt auch ne rolle

          z.B. Sprache, Autor, Erstellungsprogramm, Suchwörter, Erstellungsdatum, usw. im <meta>- und <title>-Tag.

          Du meinst die entsprechenden Elemente. Lediglich das meta-Element ist leer, deshalb stehen die Informationen als Attribut im Tag. Siehe http://selfhtml.apsel-mv.de/tag-element/tag-element-attribut.html

          Als Informatikstudent sollte man sich der korrekten Begriffe bedienen.

          Ich bin leider kein Student. Ich bin dabei Fachliteratur zu OOP zu erarbeiten, leider bin ich aus grunden der ausbildung zeitmäßig nich weit gekommen :(

          vlg MB

          1. Hallo MB,

            Als Informatikstudent sollte man sich der korrekten Begriffe bedienen.

            Ich bin leider kein Student.

            Aber offenbar in einer Weiterbildung zu informatorischen Themen. Da sind die korrekten Begriffe auch wichtig.

            Ich bin dabei Fachliteratur zu OOP zu erarbeiten, leider bin ich aus grunden der ausbildung zeitmäßig nich weit gekommen :(

            Ich finde Lahres-Raýman nicht schlecht.

            Bis demnächst
            Matthias

            --
            Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
        2. ist das nicht Galileo Galilee "und sie dreht sich doch" nach dem wiederuf seiner Theory?

          1. Hallo MB,

            ist das nicht Galileo Galilee "und sie dreht sich doch" nach dem wiederuf seiner Theory?

            Jep. Das Problem für die nur-Text-Variante war, ein Element mit langem Namen zu finden, damit "(End-)tag" auch wirklich hinpasst. Nur figcaption hat auch noch 10 Buchstaben.

            Bis demnächst
            Matthias

            --
            Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
      2. Tach!

        Für die Index-Seite ist meist ein Front-Controller zuständig, der diverse anderen Komponenten heranzieht, wie beispielsweise einen Router, der die URL auswertet und die Route zum MVC-Controller findet.

        routing kenne ich mich nocht nicht aus kombiniert mit .htaccess wenn ich mich nicht irre.

        Eine .htaccess (oder Konfiguration direkt im VHost) ist keine Voraussetzung. Du meinst vermutlich Rewriting von URLs. Das macht man der schöneren Optik wegen. Prinzipiell könnte man immer auf index.php linken und den Rest im Querystring unterbringen.

        Ich finde besser, wenn nach fachlichen Gesichtspunkten zusammengefasst wird. Dann kann man in einem Ordner alles finden und muss sich nicht die Teile in verschiedenen Ordnern zusammensuchen, wenn man an einer bestimmten fachlichen Anforderung arbeitet.

        du meinst also so inetwa?:

        controler
        - config
        - language
        message
        - language
        model
        - statement
        - language
        view
        - language
        - pages
        - factory (bzw. Templates)
        

        Nein, ich meine

        Thema Foo
         - FooController
         - FooView
         - FooModel
         - FooService
        Thema Bar
         - BarController
         - BarView
         - BarModel
         - BarService
        

        Manchmal ist man aber an eine bestimmte Struktur gebunden, weil das Framework in bestimmten Verzeichnissen sucht.

        Es gibt auch kleinere Beispiele für MVC-Frameworks.

        kannst du mir referenzen geben

        Nein, ich müsste selbst die Suchmaschine anwerfen. Natürlich gibts da gute und weniger gute Implementationen, aber das gehört auch zum Lernen dazu, dass man Erfahrungen mit weniger guten sammelt, um deren Probleme zu erleben und als solche zu erkennen.

        dedlfix.