Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP - Ein Layout per "function"?!

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

  • PHP - Ein Layout per "function"?!

    Hallo liebe Gemeinde,
    ihr kennt das sicherlich auch -> wenn ich ein Layout habe, und es mit HTML umsetzen will, dann muss ich immer den ganzen Code kopieren um das es in einer HTML Datei angezeigt wird. (Kann man das so nennen? Egal, ihr versteht es sicherlich!)

    Als kleine Abhilfe könnt ihr das ganze in zwei PHP:function schreiben. Das geht einfach, und es kann jeder Anfänger schaffen.

    Was wir brauchen, 1x index.php; 1x func.php. Das wars auch schon.

    index.php:
    PHP-Code:
    <?php
    include ("func.php");
    siteheader();
    echo 
    "blablabla";
    sitefooter();
    ?>
    IMMER SCHÖN INCLUDEN.

    Soviel zur index.php. Zur Erklärung, die siteheader(); bindet unsere Headerfunktion ein. Dort wird später mal der ganze kram von eurem header, bis zum Content stehen.
    Die sitefooter(); bindet einfach den Footer und das ende des HTML-Scripts ein.

    func.php:
    PHP-Code:
    <?php

    function siteheader()
    {
      
    ?>  
        <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <link rel="stylesheet" type="text/css" href="style.css">
            <title>Testpage</title>
        </head>
        <body>
            <div class="wrap">
                <div id="header"></div>
                <div id="menu">
                </div>
            </div>
            <div class="wrap_content">
                <div id="content">
       <?     
    }

    function 
    sitefooter ()
    {
       
    ?>       </div>
            </div>
        </body>
       </html>
       <?
    }

    ?>
    Sooooo, was ihr nun seht ist unsere Funktionsdatei. Wie ihr seht, wird das HTML Grundgerüst in die Funktion geschrieben und wir können es ganz einfach in die Seite einbinden, ohne viel zu programmieren.

    Lg

  • #2
    AW: PHP - Ein Layout per &quot;function&quot;?!

    Du könnestes auch einfacher gestalten; Mit EINER Funktion.

    index.php
    PHP-Code:
    <?php
    require_once("func.php");
    design("oben");
    echo 
    'Hallo, der Content....';
    design("unten");
    ?>
    func.php
    PHP-Code:
    <?php 

    function design($location

    if (
    $location == "oben")
    {   
        echo 
    '<html> 
        <head> 
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
            <link rel="stylesheet" type="text/css" href="style.css"> 
            <title>Testpage</title> 
        </head> 
        <body> 
            <div class="wrap"> 
                <div id="header"></div> 
                <div id="menu"> 
                </div> 
            </div> 
            <div class="wrap_content"> 
                <div id="content">'

       }
       else if (
    $location == "unten")
    {
    echo 
    '</div> 
            </div> 
        </body> 
       </html>'
    ;
    }      
    }
    ?>
    jlsnews
    _________________________
    AckermannGames! Talker X (eigene Befehle in Windows Spracherkennung), Motion Feedback (Computer automatisch verriegeln) und Games!

    Kommentar


    • #3
      AW: PHP - Ein Layout per &quot;function&quot;?!

      Sorry Leute, aber das ist beides Murks. Wenn schon Code von Layout getrennt werden soll, dann richtig (Wobei das Folgende auch nicht gerade toll ist):

      index.php
      PHP-Code:
      require_once("func.php"); 
      design("oben", array('title' => 'Hallo Welt')); 
      func.php
      PHP-Code:
      function design($template, array $parameters = array()) {
          if (!
      preg_match('/[^-a-z0-9/i'$template)) {
              throw new 
      Exception('Invalid template name');
          }
          if (!
      file_exists('/templates/' $template '.php')) {
              throw new 
      Exception('Template not found');
          }
          
          
      ob_start();
          require(
      '/templates/' $template '.php');
          return 
      ob_get_clean();

      oben.php
      Code:
      ... html ...
      <?php echo $parameters['title'] ?>
      ... html ...
      Auf diese Art und Weise trennt man die Logik ziemlich gut vom Template.


      EDIT: @jlsnews: Deine Lösung ist eher noch schlechter als die von Murashi, weil sich Deine Funktion im Laufe der Zeit immer weiter aufblähen wird.
      ... Meine Meinung

      Kommentar


      • #4
        AW: PHP - Ein Layout per &quot;function&quot;?!

        Ich denke am schönsten wäre ein Templateklasse

        Kommentar


        • #5
          AW: PHP - Ein Layout per &quot;function&quot;?!

          Also so in etwa sollte sowas aussehen:

          -php-Bereich über dem Header
          -Header
          -Content
          -Footer

          Der PHP-Bereich sollte in jeder Einzelseite, die anders ist, eben deffinieren, woher der User kommt, was er angezeigt bekommen soll, welche Daten aus DB, Session, etc. gelesen werden.
          Danach gibt dieser Part vor, wie title, description, geladene Scripts, etc. in den head-Bereich kommen.
          Der Head-Teil ist nur ein Gerüst der entweder ebenfalls includet wird, oder einfach in der unique-Datei vorhanden sein soll samt des Contents.

          Footer wieder includet. Dafür braucht man kein PHP, man kann das Gerüst ja getrost aus einer anderen Datei includen.

          Im Grunde geht es nur darum sich wiederholende Code-Teile nur 1x irgendwo stehen zu haben, sodass man bei Änderungen nicht zig Dateien ändern muss. Deswegen klammert man diese in externe Dateien aus und includet diese.
          PHP sollte wenn möglich über dem Code verarbeitet werden, weil mögliche Fehler ja irgendwie Fehler ausgegeben werden müssen, bzw. den user umleiten müssen.

          Ich finde die Lösungen mittels PHP-Funktionen umständlich, da man ja den HTML-Code da mit echo ausgeben muss und das ist einer Datei selbst ja unübersichtlich bzw. schafft das unnötige Parser-Aufrufe (wegen Verschachtelungen). Man hat bei komplexeren Dateien eh genug Funktionen und PHP-Zeilen, ohne auch noch den eigentliche HTML-Code da mit einzubauen.
          laufendes Projekt: Filme, TV und digitale Unterhaltung - Film am Schirm

          Kommentar


          • #6
            AW: PHP - Ein Layout per &quot;function&quot;?!

            Tipp für ein einfaches und dennoch sehr mächtiges Templatescript:

            PHP-Code:
            <?php
            function Template($T){
            function 
            T($u){
            $x str_replace(array("{:","}"),"",$u[0]);
            global $
            $x;
            return $
            $x;
            }
            $T=preg_replace_callback("|{:[\w]*}|","T",$T);
            return
            $T;
            }
            ?>
            … dann aufrufen mit:

            PHP-Code:
            <?php
            $head 
            "Meine Website";
            $menu "Start\nÜber\nImpressum";
            $content "Inhalt. All I need is a miracle.";

            $tmp "<h1>{:head}</h1><pre>{:menu}</pre><p>{:content}</p>";

            echo 
            Template($tmp);
            ?>
            (geklaut von hier)
            <?php foreach (array(40,95,41,176) as $n) echo chr($n); ?>
            Zitat von Blues
            Im Ernst, so eine dämliche Aussage ist sogar für dieses Forum herrausragend.

            Kommentar


            • #7
              AW: PHP - Ein Layout per &quot;function&quot;?!

              PHP-Code:
              <?php
              $head 
              "Meine Website";
              $menu "Start\nÜber\nImpressum";
              $content "Inhalt. All I need is a miracle.";

              $tmp "<h1>{:head}</h1><pre>{:menu}</pre><p>{:content}</p>";

              echo 
              Template($tmp);
              ?>
              Sorry - aber wozu soll das denn gut sein? Da kannst Du doch gleich die Platzhalter durch die Variablen ersetzen..
              ... Meine Meinung

              Kommentar


              • #8
                AW: PHP - Ein Layout per &quot;function&quot;?!

                Das ist ein Beispiel. Der Vorteil entfaltet sich (natürlich) erst bei Indienstnahme über mehrere Dateien, zum Beispiel über statische HTML-Dateien, welche dann aber trotzdem auf gewisse Variablen zugreifen dürfen.
                <?php foreach (array(40,95,41,176) as $n) echo chr($n); ?>
                Zitat von Blues
                Im Ernst, so eine dämliche Aussage ist sogar für dieses Forum herrausragend.

                Kommentar


                • #9
                  AW: PHP - Ein Layout per &quot;function&quot;?!

                  Das ist kein Vorteil - Dann hast Du globale Variablen über mehrere Dateien hinweg verstreut, die dann an irgendeiner Stelle im Template auch noch über global in die Funktion geholt werden. Beim Debuggen kommst Du aber einer gewissen Menge gar nicht mehr klar..

                  Ich meine, es ist doch nicht umsonst so, dass im Zend_Framework oder bei Smarty die View-/Template-Mechanismen ganze Packages umfassen.
                  ... Meine Meinung

                  Kommentar


                  • #10
                    AW: PHP - Ein Layout per &quot;function&quot;?!

                    Mein Beispiel geht eher davon aus, dass nicht verschiedene PHP-Seiten jeweils header.php, footer.php, menu.php, etc. includen, sondern dass es eine index.php gibt, die das alles regelt.
                    <?php foreach (array(40,95,41,176) as $n) echo chr($n); ?>
                    Zitat von Blues
                    Im Ernst, so eine dämliche Aussage ist sogar für dieses Forum herrausragend.

                    Kommentar


                    • #11
                      AW: PHP - Ein Layout per &quot;function&quot;?!

                      Mein Beispiel geht eher davon aus, dass nicht verschiedene PHP-Seiten jeweils header.php, footer.php, menu.php, etc. includen, sondern dass es eine index.php gibt, die das alles regelt.
                      Wobei wir wieder hier wären:
                      Sorry - aber wozu soll das denn gut sein? Da kannst Du doch gleich die Platzhalter durch die Variablen ersetzen..
                      ... Meine Meinung

                      Kommentar


                      • #12
                        AW: PHP - Ein Layout per &quot;function&quot;?!

                        Eben gerade nicht, wenn das nur HTML-Seiten sind.
                        <?php foreach (array(40,95,41,176) as $n) echo chr($n); ?>
                        Zitat von Blues
                        Im Ernst, so eine dämliche Aussage ist sogar für dieses Forum herrausragend.

                        Kommentar


                        • #13
                          AW: PHP - Ein Layout per &quot;function&quot;?!

                          Du kannst doch aber nicht alle Funktionalität in eine index.php packen..?!
                          Zuletzt geändert von xm22; 24.02.2012, 14:43.
                          ... Meine Meinung

                          Kommentar


                          • #14
                            AW: PHP - Ein Layout per &quot;function&quot;?!

                            Warum nicht?
                            Und dann per htaccess alle $x.htm nach index.php?p=$x umrouten.

                            Aber natürlich.
                            <?php foreach (array(40,95,41,176) as $n) echo chr($n); ?>
                            Zitat von Blues
                            Im Ernst, so eine dämliche Aussage ist sogar für dieses Forum herrausragend.

                            Kommentar


                            • #15
                              AW: PHP - Ein Layout per &quot;function&quot;?!

                              Applikationen mit mehr als drei Seiten hast Du noch nicht entwickelt, oder?
                              ... Meine Meinung

                              Kommentar

                              homepage-forum.de - Hilfe für Webmaster! Statistiken

                              Einklappen

                              Themen: 56.654   Beiträge: 428.603   Mitglieder: 28.349   Aktive Mitglieder: 78
                              Willkommen an unser neuestes Mitglied, Antoniomsh.

                              Online-Benutzer

                              Einklappen

                              172 Benutzer sind jetzt online. Registrierte Benutzer: 4, Gäste: 168.

                              Mit 3.502 Benutzern waren am 23.01.2020 um 17:20 die meisten Benutzer gleichzeitig online.

                              Die neuesten Themen

                              Einklappen

                              Die neuesten Beiträge

                              Einklappen

                              Lädt...
                              X