Witam.
Ostatnio zainteresowalem sie optymalizacja i pojawilo sie pytanie jak dziala cachowanie i jak to zrobic??
scanner
9.05.2003, 20:04:29
[php:1:c740db5d12]<?php
// pseudokod
$zmiana= sprawdz_zawartosc(); // lub sprawdz date
if($zmiana){
pobierz_zawartosc_szablonu();
wypelnij_szablon_daymi();
zapisz_wynik();
}
?>[/php:1:c740db5d12]
Tak ja to widze w podstawowym zakresie.
heh..... a moge poprosic o jakis bliższy opis funkcji?? Bo ja sie nie barzdo orientuje co znaczy co. Chcialbym to zastosowac, ale nie wiem jak.
spenalzo
9.05.2003, 20:15:36
Przecież pisze, że to pseudokod, czyli taki schemat ideowy...
Po sprawdzeniu odpowiedniego warunku pobierasz szablon, wypełniasz go świeżymi danymi i nadpisujesz na miejsce tamtego.
hmm.. ale sam schema ideaowy mi nic nie daje. Chce wiedzic dokladniej jak to zrobic.
scanner
9.05.2003, 20:34:05
Ja stosuje coś takiego (nie jest to Smarty, ale na moje potrzeby wystarcza i zaw2sze moge własny kod zmodyfikowac łatwo):[php:1:c5d4413fd9]<?php
function __getTemplate($__file){
$__template = 'Error: Unable to open template file.';
if(file_exists($__file)){
$__template = file($__file);
$__template = implode('', $__template);
}
return $__template;
}
function __getTemplateBlock($__file, $__delimiter){
$__result = __getTemplate($__file);
$__noError = ereg($__delimiter, $__result, $__wynik);
if($__noError){
$__result = $__wynik[1]; // znaleziono - Zapisujemy klocek w tablicy
} else {
$__result = 'Error: Unable to get template content.';
}
return $__result;
}
?>[/php:1:c5d4413fd9]
__getTemplate() pobiera do pamięci plik z szablonem, i scala go w string (file() ładuje linijka do linijki do tablicy, dlatego implode);
__getTemplateBlock() z tego co wykona _getTemplate() wycina dany fragment, np. [php:1:c5d4413fd9]<?php $__delimiter = '<title>(.*)</title>'; ?>[/php:1:c5d4413fd9] pobierze tytuł strony - bez znaczników.
Ja dziś potrzebowałem prościutkiej funkcji do parsowania, i wyszły dwie, krótka i dłuższa, zgadnijcie która szybsza :]
[php:1:e2179f13e7]<?php
function parse1($file, $blocks = array()){
if(file_exists($file)){
$f = fopen($file, 'r');
$unparsed = fread($f, filesize($file));
fclose($f);
}
else{
die('Plik "'.$file.'" nie istnieje!');
}
if(preg_match_all('#{(.+?)}#is', $unparsed, $found)){
$parsed = $unparsed;
foreach($found[1] as $block){
$parsed = str_replace('{'.$block.'}', $blocks[$block], $parsed);
}
}
return $parsed;
}
function parse2($file, $blocks = array()){
$unparsed = file_exists($file) ? implode('', file($file)) : die('Plik '.$file.' nieistnieje!');
return preg_replace('/{([^}]+)}/e', '$blocks["1"]', $unparsed);
}
?>[/php:1:e2179f13e7]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.