De Block Functie

Het is ook handig om een block functie te hebben. zo hoef je niet voor elke nieuwe content een bestand te veranderen.

de block functie ziet er als volgt uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
    public function newBlock($blockname, $content) {
        $this->blockcontent[$blockname] .= $this->getBlock($blockname); //Block inhoud ophalen
        
        foreach($content as $pattern=>$replacement){                        
$this->blockcontent[$blockname] = preg_replace("#\{".$pattern."\}#si", $replacement, $this->blockcontent[$blockname]);  //Inhoud in block veranden            
        }
        
        
    }

?>


je zeit dat we gebruimaken van de functie getBlock. want, we moeten de inhoud van het bestaan nog ophalen. de functie getBlock ziet er als volgt uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    public function getBlock($blockname) {
    $regex = "#\[start-block ".$blockname."\](.+?)\[end-block ".$blockname."\]#s";
    preg_match($regex, $this->tpl, $matches); //Inhoud verkrijgen
    return $matches[1]; //Inhoud returnen
}
?>


als je dit toe zal voegen werkt het niet. we moeten de blockinhoud nog toevoegen aan de pagina. dit moeten we doen in de functie parse. hier komt nu wat bij:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
 foreach($this->blockcontent as $blockname=>$block) {
            $regex = "#\[start-block ".$blockname."\](.+?)\[end-block ".$blockname."\]#s";
            $this->tpl = preg_replace($regex, $block, $this->tpl); //De inhoud aan de pagina toevoegen.
        }
?>


de hele code ziet er als volgt uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
class TemplateParser {
     var
$file = 'start.tpl'; //Het standaard bestand, deze gebruikt hij als er geen bestand wordt opgegeven
     var $errors = ''; //Hier komen de errors in
                var $getfile = false; //Komt nog...
                var $tpl = ''; //Komt nog...
                var $blockcontent = array(); //Komt nog...



    public function __construct($file = false) {
     if($file != "" && $file != false) { //Kijken of $file niet leeg is.
      if(!preg_match("#(.+?).tpl#si", $file)) { //Kijken of het bestand de exentie .tpl heeft
        $this->errors .= "<b>TemplateParser Error:</b> Het bestand moet de exentie .tpl hebben!<br />";
        }

        if(!file_exists($file)) { //Kijken of het bestand bestaat
        $this->errors .= "<b>TemplateParser Error:</b> het bestand ".$file." bestaat niet!<br />";
        }

    
        $this->file = $file;
        
    
        
    }
}

public function getfile() {
        if(file_exists($this->file)) { //Kijken of bestand bestaat
            $this->tpl = file_get_contents($this->file); //Inhoud verkrijgen
            $this->getfile = true; //Bestand is opgehaald
        }
}

     public function getBlock($blockname) {
    $regex = "#\[start-block ".$blockname."\](.+?)\[end-block ".$blockname."\]#s";
    preg_match($regex, $this->tpl, $matches); //Inhoud verkrijgen
    return $matches[1]; //Inhoud returnen
}
    public function newBlock($blockname, $content) {
        $this->blockcontent[$blockname] .= $this->getBlock($blockname); //Block inhoud ophalen
        
        foreach($content as $pattern=>$replacement){                        
$this->blockcontent[$blockname] = preg_replace("#\{".$pattern."\}#si", $replacement, $this->blockcontent[$blockname]);  //Inhoud in block veranden            
        }
        
        
    }

    public function set($pattern, $replacement) {
        if($this->getfile == false) { //Kijken of het bestand al gelezen is.
        $this->getfile(); //Zo niet, bestand inlezen.
        }
        $this->tpl = preg_replace("#\{".$pattern."\}#si", $replacement, $this->tpl); //{iets} wordt veranderd in iets.
    }
public function parse() {
      if($this->errors == '') { //Kijken of de errors leeg zijn
       if($this->getfile == false) { //Als het bestand nog niet gelezen is, laten lezen.
        $this->getfile();
        }

                  foreach($this->blockcontent as $blockname=>$block) {
            $regex = "#\[start-block ".$blockname."\](.+?)\[end-block ".$blockname."\]#s";
            $this->tpl = preg_replace($regex, $block, $this->tpl); //De inhoud aan de pagina toevoegen.
        }
                return $this->tpl; //De inhoud returnen
        }else{
            return $this->errors; //Als er errors zijn, deze returnen.
        }
    }

}

?>



we kunnen het gebruik van de block al gebruiken.
in index.tpl zetten we:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
{titel}<br />
{tekst}<br />
[start-block test]
{blockname} {blockid}<br />
[end-block test]

dan parsen we hem als volgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
require("naam_van_bestand_waar_de_class_in_staat.php");
$template = new TemplateParser("index.tpl"); //Bestand index.tpl verkrijgen
$template->set("titel", "Titel van de pagina"); //titel veranderen
$template->set("tekst", "Tekst van de pagina"); //tekst veranderen
$template->newBlock("test", array('blockname'=>'Block', 'blockid'=>'1'));  
//Zal opleveren: Block 1
$template->newBlock("test", array('blockname'=>'Block', 'blockid'=>'2'));
//Zal oplevereb: Block 2
echo $template->parse();
?>

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Bestand Verkrijgen en Lezen.
  3. Bestand aanpassen en parsen.
  4. De Block Functie

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.