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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden |
31.12.2006, 15:18:18
|
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($file, 4096);
$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!
|
31.12.2006, 15:19:36
|
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)
|
31.12.2006, 15:37:37
|
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
|
31.12.2006, 15:51:08
|
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..
|
31.12.2006, 16:37:18
|
Junior Member
|
|
Registriert seit: Oct 2006
Beiträge: 160
|
|
AW: Template-Class
Ja...
in einer Schleife^^
(verstehste später, wenn ich das fertig hab)
|
31.12.2006, 16:40:12
|
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..
|
31.12.2006, 17:01:19
|
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
|
31.12.2006, 17:29:54
|
|
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/
|
31.12.2006, 17:35:05
|
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^^
|
31.12.2006, 17:46:22
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Template-Class
Zitat:
Zitat von BruceCompanys
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->t = 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.
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:30:11 Uhr.
|