SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Entwicklung und Softwaredesign
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 31.12.2006, 15:18:18
BruceCompanys BruceCompanys ist offline
Junior Member
 
Registriert seit: Oct 2006
Beiträge: 160
Template-Class

PHP-Code:
<?php
###########################################
#Author: BruceCompanys (C) => Simon Brass
#Required: 31.12.2006
#
#OpenSource
###########################################

class template {

    var 
$tmp_file;
    var 
$error 'Template nicht vorhanden';
    var 
$content;
    var 
$vars = array();

    function 
template($file) {

        
$this->tmp_file $file;
        
$this->content "";
        
$this->read_template();
        
    }
    
    function 
read_template() {
    
        
$file fopen($this->tmp_file"r");
        
        if(!
$file) {
            echo 
$this->error;
        } else {

            while(!
feof($file)) {
               
$temp fgets($file4096);
               
$this->content .= $temp;
               
            }
            
        }
     }
     
     function 
set_var($title$value) {

         if(!isset(
$this->vars[$title])){
              
$this->vars[strtoupper($title)] = $value;
         } else {

              
$thisk $this->vars[strtoupper($title)];

                  if(!
is_array($thisk)){
                       
settype($thisk"array");
                  }

                      
$count count($thisk);
                      
$thisk[$count] = $value;
                      
$this->vars[strtoupper($title)] = $thisk;
        }

     }
     
     function 
set_array($array){
     
         foreach(
$array as $k => $v){
              if(!isset(
$this->vars[strtoupper($k)])){
                   
$this->vars[strtoupper($k)] = $v;
              } else {
              
                   
$thisk $this->vars[strtoupper($k)];

                       if(!
is_array($thisk)){
                           
settype($thisk,"array");
                       }

                       
$count count($thisk);
                       
$thisk[$count] = $v;
                       
$this->vars[strtoupper($k)] = $thisk;
              }
         }
         
     }

     function 
parse() {
     
         foreach(
$this->vars as $k => $v){
            if(!
is_array($this->vars[strtoupper($k)])){
              
$this->content str_replace("{" strtoupper($k) . "}"$v$this->content);
            } else {
              for(
$i=0$i count($this->vars[strtoupper($k)]); $i++){
                  
$this->content str_replace("{" strtoupper($k) . "}"$this->vars[strtoupper($k)][$i], $this->content);
              }
            }
         }

       echo 
$this->content;
     }
}
?>
Ich habe ein sehr sehr einfaches Template-System gefunden und hab mir gedacht, weißte wat, nimm es und mach was raus!

Alle Funktionne überarbeitet oder neu!

Und nu:
Was hab ich falsch gemacht!
Mit Zitat antworten
  #2  
Alt 31.12.2006, 15:19:36
BenniG. BenniG. ist offline
Member
 
Registriert seit: Oct 2006
Beiträge: 610
AW: Template-Class

Zitat:
Was hab ich falsch gemacht!
http://www.lugbz.org/documents/smart-questions_de.html nicht gelesen? ;)
Was ist Deine Frage, bzw. WAS geht nicht?

Geändert von BenniG. (31.12.2006 um 15:20:11 Uhr)
Mit Zitat antworten
  #3  
Alt 31.12.2006, 15:37:37
BruceCompanys BruceCompanys ist offline
Junior Member
 
Registriert seit: Oct 2006
Beiträge: 160
AW: Template-Class

Das ist rein profilaktisch!

Ich meine natürlich damit (was ihr natürlich nicht wisst, ihr könnt ja schlecht meine Gedankengämge verstehen!), ist das ihr, wenn irh Lust, mir sagen könntet, was man besser schreiben könnte oder was im Code falsch, also wie man es NICHT schreiben sollte!

Lobe sind natürlich auch schön^^
der kleine Bruce ja auch mal sowas^^

mfg
Mit Zitat antworten
  #4  
Alt 31.12.2006, 15:51:08
BenniG. BenniG. ist offline
Member
 
Registriert seit: Oct 2006
Beiträge: 610
AW: Template-Class

Das z.B. versteh ich nicht
PHP-Code:
function set_var($title$value) {
         if(!isset(
$this->vars[$title])){
              
$this->vars[strtoupper($title)] = $value;
         } else {

              
$thisk $this->vars[strtoupper($title)];

                  if(!
is_array($thisk)){
                       
settype($thisk"array");
                  }

                      
$count count($thisk);
                      
$thisk[$count] = $value;
                      
$this->vars[strtoupper($title)] = $thisk;
        }

     } 
mach doch gleich
PHP-Code:
function set_var($title$value) {
         
$title=strtoupper($title);
         if(!isset(
$this->vars[$title])){
              
$this->vars[$title] = array($value);
         } else {
                      
$this->vars[$title][] = $value;
        }

     } 
Dann brauchst du das ganze handling ob Array oder nicht garnicht.. Wozu willst du das eigentlich über Arrays machen? Kann ein und derselbe Template-Parameter denn mehrere Werte bekommen?? Was soll dann passieren? Momentan ersetzt du {Variable} durch den ersten Wert im Array..
Mit Zitat antworten
  #5  
Alt 31.12.2006, 16:37:18
BruceCompanys BruceCompanys ist offline
Junior Member
 
Registriert seit: Oct 2006
Beiträge: 160
AW: Template-Class

Ja...
in einer Schleife^^

(verstehste später, wenn ich das fertig hab)
Mit Zitat antworten
  #6  
Alt 31.12.2006, 16:40:12
BenniG. BenniG. ist offline
Member
 
Registriert seit: Oct 2006
Beiträge: 610
AW: Template-Class

Naja, das hier
PHP-Code:
for($i=0$i count($this->vars[strtoupper($k)]); $i++){
                  
$this->content str_replace("{" strtoupper($k) . "}"$this->vars[strtoupper($k)][$i], $this->content);
              } 
in deiner Parse-Methode kannst du dir halt sparen, weil das str_replace nur einmal was machen wird.. Danach ist es schon replaced..
Mit Zitat antworten
  #7  
Alt 31.12.2006, 17:01:19
BruceCompanys BruceCompanys ist offline
Junior Member
 
Registriert seit: Oct 2006
Beiträge: 160
AW: Template-Class

Ja ist geändert^^

und ne frage:

<!-- BEGIN BLOCK -->
{irgendein Text}
<!-- END BLOCK -->

Das ist meine Schleife...

So wie schaffe ich es jetzt via Regex das aus dem Content zu filtern?
mfg
Mit Zitat antworten
  #8  
Alt 31.12.2006, 17:29:54
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Template-Class

Einfach mal gucken, wie andere sowas schon gemacht haben:
http://www.kuerbis.org/asap/article/12/
Mit Zitat antworten
  #9  
Alt 31.12.2006, 17:35:05
BruceCompanys BruceCompanys ist offline
Junior Member
 
Registriert seit: Oct 2006
Beiträge: 160
AW: Template-Class

Dat is es ja net...

Ich will nur den Regex wissen^^

ich würd es ja sonst net machen, wenn mir so ne Klasse reichen würde^^
Mit Zitat antworten
  #10  
Alt 31.12.2006, 17:46:22
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Template-Class

Zitat:
Zitat von BruceCompanys Beitrag anzeigen
Ich will nur den Regex wissen^^
Saugen und gucken, wies richtig gemacht wird. Oder wenigstens das angucken:
PHP-Code:
    /**
     * Parse the template.
     * This function creates the template object tree and replaces contents
     * of blocks with simple placeholders. 
     * 
     * @return   void
     */
    
protected function _initTemplate()
    {
        
preg_match_all("/<!--\s+BEGIN\s+(.*)?\s+-->(.*)<!--\s+END\s+(\\1)\s+-->/ms",$this->t,$ma);
        for (
$i 0$i count($ma[0]); $i++)
        {
        
$search "/\s*\n*<!--\s+BEGIN\s+(" $ma[1][$i] . ")?\s+-->(.*)<!--\s+END\s+(" $ma[1][$i]. ")\s+-->\s*\n*/ms";
        
$replace $this->delimiterStart $ma[1][$i] . $this->delimiterEnd;
        
        
$this->bl[$ma[1][$i]] =& new $this->className('',$this->params);
        
$this->bl[$ma[1][$i]]->loadTemplateContent($ma[2][$i]);
        
$this->preg_replace($search,$replace,$this->t);
        }
    }
    
    
/**
     * Fetch a block out of the template. 
     * If the block exists, this function returns a Template object,
     * otherwise nothing (false).
     * When parsing the template, the blocks will removed
     * into Template objects and replaced with placeholders. 
     * The name of the placeholder is identical to the name 
     * of the removed block.
     * 
     * @param    string $blockName
     * @access   public
     * @return   object Template or boolean false
     */
    
public function fetchBlock($blockName)
    {
        if (isset(
$this->bl[$blockName]))
        return 
$this->bl[$blockName];
        else
        return 
false;
    }
    
    
/**
     * Assign value to an existing placeholder. 
     * If this function is called multiple, the contents
     * will be added. 
     * 
     * The parameter $varName can be a string, an associative 
     * array or a Template object. 
     * 
     * @param    mixed $varName
     *           Allowed types:    Requirements:
     *           string            $varValue            
     *           array             Array format: 
     *                             array ("name_of_placeholder" => Value,
     *                                    ... )
     *           object            Template object or any object which
     *                             returns HTML code via get() method.
     *
     * @param    string $varValue (optional)
     * @access   public
     */
    
public function assign($varName,$varValue=false)
    {
        if (
is_array($varName))
        {
        foreach (
$varName as $key => $value)
            {
            if (
is_object($value))
                
$this->pl[$key][] = clone $value;
            else
                
$this->pl[$key][] = $value;
            }
        }
        else
        {
        if (
is_object($varValue))
                    
$this->pl[$varName][] = clone $varValue;
                else
                    
$this->pl[$varName][] = $varValue;
        }
    } 
Zitat:
ich würd es ja sonst net machen, wenn mir so ne Klasse reichen würde^^
Also mir reicht KTemplate. Kann mit dynamischen Blöcken umgehen und Variablenarrays verwursten.
Mit Zitat antworten
Antwort


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

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
read_dir über template engine ausgeben nurion PHP Grundlagen 7 29.06.2006 11:08:17
Smarty Template Wiederholung auf einer Seite Agentmulder79 PHP Grundlagen 17 24.03.2006 06:10:16
[SUCHE] Template Klasse mentrio PHP Grundlagen 5 29.12.2005 10:48:20
class geht net :( de_malte PHP für Fortgeschrittene und Experten 5 18.12.2004 20:53:08
if else echo umwandeln in class??? brüllwürfel PHP Grundlagen 0 27.03.2004 20:40:38


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:30:11 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt