Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrfache Nutzung ähnlicher Funktionalität

Einklappen

Neue Werbung 2019

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

  • Mehrfache Nutzung ähnlicher Funktionalität

    Guten Morgen.

    Ich möchte gern eine Termin-Box auf der linken Seite meiner Website anzeigen. Diese soll von der Form und Aufmachung immer gleich sein, jedoch je nach angezeigter Unterseite unterschiedliche Inhalte zeigen.

    Zwei Beispiele für die Implementierung fallen mir momentan ein.

    Erstens: Funktion benutzen. Nehme man an, die Funktion TerminBox($type) befinde sich in der Datei 'tbox.inc' und würde entsprechend der Variable $type die jeweilig spezifizierten Termine aus einer DB laden und anzeigen, dann könnte man in jeder Unterseite einfach: "TerminBox(xxx)" schreiben. Allerdings müßte man dann die Datei 'tbox.inc' überall includen (bzw. in der Hauptdatei, falls ein index.php - PfadSystem verwendet wird). Da würden sich über kurz oder lang dann die Dateien stapeln, weil ich natürlich sehr viel wiederverwenden will.

    Zweitens: Globale Variable und File einfügen. Nehme man an, in der Datei 'tbox.inc' befinde sich direkt im globalen Namespace die Ausgabe der Terminbox in HTML. Dann könnte ich in jeder Unterseite zB schreiben: "$type = xxx; require 'tbox.inc'". Würde dann natürlich den globalen Namensraum gefährden, falls sich da Dinge gegenseitig überschreiben.

    Ihr habt sicherlich noch andere Ideen, oder?

    Gruß,
    Glen.

  • #2
    Hallo Glen,

    zunächst ein herzliches Willkommen im Forum.

    Ihr habt sicherlich noch andere Ideen, oder?
    Wenn du auf prozedurals Implementierung stehst, kannst du das schon so umsetzen. Im Bereich der Objektorientierung gibt es da jede Menge anderer Möglichkeiten und Tools zur Umsetzung.

    Kommentar


    • #3
      Zitat von dr.e. Beitrag anzeigen
      zunächst ein herzliches Willkommen im Forum.
      Firma dankt, Chef bezahlt.

      Zitat von dr.e. Beitrag anzeigen
      Im Bereich der Objektorientierung gibt es da jede Menge anderer Möglichkeiten und Tools zur Umsetzung.
      Eine sehr vage Formulierung. Kannst du das an einem Beispiel erläutern und/oder auf ein, zwei Webseiten zur Vertiefung verweisen?

      Danke,
      Glen.

      Kommentar


      • #4
        Hallo Glen,

        Eine sehr vage Formulierung. Kannst du das an einem Beispiel erläutern und/oder auf ein, zwei Webseiten zur Vertiefung verweisen?
        Ich persönlich kann dir folgende Seiten empfehlen:

        * Adventure PHP Framework - Kommentar Funktion Tutorial
        * forum.adventure-php-framework.org [de] • Thema anzeigen - Minimales Modul
        * forum.adventure-php-framework.org [de] • Thema anzeigen - GenericORMapper
        * Adventure PHP Framework - Gaestebuch Tutorial

        empfehlen. Besonders die Diskussion im Forum ist zum Thema generisches Design / Kapselung von Funktionen interessant. Sollte ich dir grundsätzlich zu deinem Thema hinsichtlich Regel No. 1 und No. 2 helfen können, lass es mich wissen.

        Kommentar


        • #5
          Für eine kleine Website ginge auch etwas der Art:

          xyz.php
          PHP-Code:
          <?php
          class myComponents 
            
          {
            static 
          $components;

            static function 
          getComponent ($name $data null)
              {
              if (
          false === isset (self::$components[$name])) {
                include_once (
          'your/path/' strtolower ($name) . '.comp.php');
                
          self::$components[$name] = 1;
                }
              
              return (
          $name ($data));
              }
            }
          index.php
          PHP-Code:
          <?php
          require_once ('xyz.php')
          echo 
          myComponents::getComponent ('myBox' , array ('name' => 'Peter'));
          your/path/mybox.comp.php
          PHP-Code:
          <?php
          function myBox ($data)
            {
            
          $content 'Hello world, hello ' $data['name'];
            return (
          $content);
            }
          Wahlweise kann man die Funktion auch weglassen und dem Include das return geben, Output-Buffering verwenden, Caching in self::$components[$name] implementieren...

          Kommentar

          Lädt...
          X