[PHP] Templateklasse und Nutzung derer

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Smokers, 12. Oktober 2008 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 12. Oktober 2008
    Templateklasse und Nutzung derer

    Hallo ihr lieben, hab mal eine Frage
    nehmen wir mal an ich hab folgende Klasse :

    PHP:
    <? php
    require_once( "config/dbconfig.php" );
    require_once(
    "config/config.inc.php" );


    class 
    Template  {

        public 
    $sVorlage = '' ;
        public 
    $sTplPath = '' ;

        function 
    __construct ( $path ){
            
    $this -> sTplPath  _CONFIG_TEMPLATE_PATH  . $path ;
            
    $this -> setVorlage ( $this -> sTplPath . '/index.html' );
        }

        private function 
    setVorlage ( $vorlage ) {
            
            if(
    file_exists ( $vorlage )) {
                
                
    $fp  fopen ( $vorlage "r" );
                
    $text  fread ( $fp filesize ( $vorlage ));
                
    fclose ( $fp );
                
    $this -> sVorlage  $text ;
            }
            else {
            
                
    $this -> sVorlage  $vorlage ;
            }

        }



        public function 
    setContent ( $param1 $param2 = "" ) {

            if(!
    is_array ( $param1 ) &&  $param2  && ! is_array ( $param2 )) {

                
    $this -> setOne ( $param1 $param2 );

            } 
            elseif (
    is_array ( $param1 ) && ! $param2 ){

                
    $this -> setArray ( $param1 );
            } 
            elseif (!
    is_array ( $param1 ) &&  is_array ( $param2 )) {
                
                
    $this -> setLoop ( $param1 $param2 );
            } 
            else {
                
                die(
    "Parameter in der Klasse Vorlage wurden falsch übergeben." );
            }

        }

     

        private  function 
    setOne ( $suchWort $substitution ) {

            
    $this -> sVorlage  str_replace ( '{$' . $suchWort . '}' ,
            
    $substitution ,
            
    $this -> sVorlage );
        }

     


        private function 
    setArray ( $Array ) {

            foreach (
    $Array  as  $suchWort  =>  $substitution ) {
        
                
    $this -> setOne ( $suchWort $substitution );
            }

        }



        public function 
    setLoop ( $schleife $Array ) {

            
    $str  explode ( "<!--anfang:" . $schleife . "!-->" str_replace ( "<!--ende:" . $schleife . "!-->" "<!--anfang:" . $schleife . "!-->" $this -> sVorlage ));
            
    $teilStr  "" ;

            foreach (
    $Array  as  $element ) {

                
    $teilVorlage  = new  Template ( $str [ 1 ]);
                
    $teilVorlage -> setArray ( $element );
                
    $teilStr  .=  $teilVorlage -> vorlage ;

            }

            
    $this -> sVorlage  $str [ 0 ] .  $teilStr  $str [ 2 ];

        }
        
        function 
    __destruct () {
            
            echo 
    $this -> sVorlage ;
        }

    }

    ?>
    und mein Aufruf sieht folgendermaßen aus :

    PHP:
    switch ( $_GET [ 'bereich' ]) {
        case 
    'news'             $content  implode ( file ( 'pages/news.php' )); break;
        case 
    'uebermich'     $content  implode ( file ( 'pages/uebermich.php' ));break;
        case 
    'referenzen'     $content  implode ( file ( 'pages/referenzen.php' ));break;
        case 
    'impressum'     $content  implode ( file ( 'pages/impress.php' )); break;
        case 
    'gaestebuch'     $content  file_get_contents ( 'pages/guestbook.php' ); break;
        default                : 
    $content  'Diese Seite existiert nicht...' ; break;
    }
    $tpl -> setContent ( 'content' , $content );

    Wie bekomme ich es nun hin, das Diese PHP Dateien nicht 1:1 ausgegeben werden, sondern natürlich geparst werden.

    Ich will ja nicht meinen Quellcode von guestbook.php einbetten sondern das Gästebuch, also das was raus kommt....

    Normalerweise würde ich das über includes regeln, jedoch hab ich ja ein Templatesystem.....


    Vielen Dank schon mal =)
     
  2. 12. Oktober 2008
    AW: Templateklasse und Nutzung derer

    Sorry, habe leider nicht die Zeit um die Frage an sich zu beantworten (evt. Editier ich später).
    Aber funktioniert das?
    PHP:
    $content  implode ( file ( 'pages/news.php' ));
    ;
    Braucht implode nicht 2 Argumente???.

    Und wenn du mit implode(file()); erreichen willst das in $content der komplette inhalt der Datei als ein einziger string steht benutz doch PHP: file_get_contents - Manual
     
  3. 12. Oktober 2008
    AW: Templateklasse und Nutzung derer

    also ja ,es geht erstmal vorne weg.. er includiert dann den ganzen kram aus der datei und bettet es ein ,

    wenn ich jedoch in die datei schreibe :

    <?php echo 'test'; ?> , dann steht das genau so 1:1 in der $content var....

    nicht nur "test"....


    file_get_contents macht genau das gleiche anscheinend... ;-)
     
  4. 12. Oktober 2008
    AW: Templateklasse und Nutzung derer

    du müsstest den string parsen. geht via eval()
     
  5. 12. Oktober 2008
    AW: Templateklasse und Nutzung derer

    okay danke murdoc, habs per :

    dann: ob_start(); eval('?>' . $content); $content = ob_get_clean();
    $tpl->setCntent('content', $content);

    nu gelöst =)

    dank euch
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.