WinFuture-Forum.de: Php: Template Engine Problem - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Php: Template Engine Problem


#1 Mitglied ist offline   hasch 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.790
  • Beigetreten: 28. Januar 04
  • Reputation: 0
  • Wohnort:Localhost
  • Interessen:Ach so viele ...

geschrieben 03. Februar 2005 - 15:26

Ich bin dabei mir eine kleine Template-Engine zu basteln, stehe aber schon vor einem Problem, zuvor mal der Code:
class template
{
	var $pfad;
	var $ersetz_name;
	var $var_name;
	var $tpl_name;
	
	function laden($pfad, $tpl_name)
	{
  $load = file_get_contents($pfad.$tpl_name);
  return $load;
	}
	
	function ersetzen($var_name, $ersetz_name)
	{
  $ersetzen = str_replace("{".$var_name."}", $ersetz_name, $this->laden());
  return $ersetzen;
	}
}
$tpl1 = new template;
$tpl1 = $tpl1->laden('','template.html');
$tpl1 = $tpl1->ersetzen("titel", "Testtitel");
echo $tpl1;


Ich glaube mein Fehler dürfte bei "$this->laden()" liegen, da war ich nämlich hängen geblieben, wie kann ich an dieser Stelle auf das Ergebnis, also das was zurückgegeben wird der Funktion laden verweisen? Ich möchte das die Daten von $tpl1 dort eingesetzt werden. Hoffe mich hat jemand verstanden, sonst einfach nachfragen. Meine Fehlermeldung:
Fatal error: Call to a member function on a non-object in C:\xampp\htdocs\mammoth\index.php on line 28

0

Anzeige



#2 Mitglied ist offline   hasch 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.790
  • Beigetreten: 28. Januar 04
  • Reputation: 0
  • Wohnort:Localhost
  • Interessen:Ach so viele ...

geschrieben 03. Februar 2005 - 17:19

Habe das ganze jetzt mal verbessert, kalppt jetzt:
class template
{
	var $pfad;
	var $ersetz_name;
	var $var_name;
	var $tpl_name;
	var $end;
	var $save;
	
	function laden($pfad, $tpl_name)
	{
  $load = file_get_contents($pfad.$tpl_name);
  $this->save=$load;
	}
	
	function ersetzen($var_name, $ersetz_name)
	{
  $ersetzen = str_replace("{".$var_name."}", $ersetz_name, $this->save);
  $this->end=$ersetzen;
	}
	
	function out()
	{
  echo $this->end;
  return true;	
	}
}
$tpl1 = new template;
$tpl1->laden('','template.html');
$tpl1->ersetzen("titel", "Testtitel");
$tpl1->out();

Baer wie kann ich es anstellen, dass eine Variable in der HTML-Datei mehrmals ersetzt wird, bsw. titel durch Titel1, Titel2,...?
0

#3 Mitglied ist offline   hasch 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.790
  • Beigetreten: 28. Januar 04
  • Reputation: 0
  • Wohnort:Localhost
  • Interessen:Ach so viele ...

geschrieben 04. Februar 2005 - 14:40

Es muss sihc doch einer von euch damit auskennen, habe jetzt einen Code für die Blöcke geschrieben, aber bekomme damit nichts ausgegeben:
	function b_einleiten($block_name)
	{
  $muster = "/\[$block_name\]([^]]*)\[\/$block_name\]/i";
  $this->block = preg_match($muster, $this->end, $treffer);  // :TODO:
  $this->treffer=$treffer[0];
  $this->connect=$this->treffer;
	}
	
	function b_virtuel($var_name, $ersetz_name) 	 // "Virtuel" werden die Werte für den Platzhalter "gesammelt"
	{
  if(substr_count($this->connect, "{".$var_name."}") == 0)
  {
 	 $this->complete=$this->complete.$this->connect;
 	 $this->connect=$this->complete.str_replace("{".$var_name."}", $ersetz_name, $this->treffer);
  }
  else
  {
 	 $this->connect=$this->complete.str_replace("{".$var_name."}", $ersetz_name, $this->treffer);
  }
	}
	
	function b_ersetzen()
	{
  $this->end=str_replace($this->treffer, $this->complete, $this->end);
	}


Wo liegt denn hier mein Fehler?
Bitte helft mir <_<
0

#4 Mitglied ist offline   hasch 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.790
  • Beigetreten: 28. Januar 04
  • Reputation: 0
  • Wohnort:Localhost
  • Interessen:Ach so viele ...

geschrieben 04. Februar 2005 - 17:58

Ich hoffe jemand kann mir jetzt helfen:
function b_einleiten($block_name)
	{
  $muster = "/\[$block_name\]([^]]*)\[\/$block_name\]/i";
  $this->block = preg_match($muster, $this->end, $treffer);  // :TODO:
  $this->treffer=$treffer[0];
  $this->connect=$this->treffer;
  $this->block_name=$block_name;
  $this->va2=$this->treffer;
	}
	
	function b_virtuel($var_name, $ersetz_name) 	 // "Virtuel" werden die Werte für den Platzhalter "gesammelt"
	{
  if(substr_count($this->va2, $var_name) == 0)
  {
 	 $this->va=$this->va2.str_replace("{".$var_name."}", $ersetz_name, $this->connect);
 	 $this->va2=$this->va;
  }
  else
  {
 	 $this->va=str_replace("{".$var_name."}", $ersetz_name, $this->va2);
 	 $this->va2=$this->va;
  }
	}
	
	function b_ersetzen()
	{
  $this->end=str_replace($this->treffer, $this->va2, $this->end);
  $this->end=str_replace("[$this->block_name]", "", $this->end);
  $this->end=str_replace("[/$this->block_name]", "", $this->end);
	}

Mein Problem, dass die erste Variable nicht ersetzt wird, beim letzten Wiederholen, Beispiel:
----------
Testtitel0

Icon0

Text0
----------

----------
Testtitel2

Icon1

Text1
----------

{titel}
Icon2

Text2
----------


Woran kann das liegen?
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0