Mogelijke toepassing

Ik zelf gebruik nu overloading in mijn Viewport-klassen. Even in het klein:

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
<?php
class ViewportObject {
   public function __render($template)
   {

      ob_start();
      include($template);
      return ob_get_clean();
   }
}



class Viewport {
   protected $viewportObject;
   protected $templateFile;
  
   public function __construct()
   {

      $this->viewportObject = new ViewportObject;
   }

  
   public function __set($key, $value)
   {

      $this->viewportObject->$key = $value;
   }

  
   public function setTemplateFile($file)
   {

      if(is_readable($file)) {
         $this->templateFile = $file;
      }
   }

  
   public function render()
   {

      echo $this->viewportObject->__render($this->templateFile);
   }
}


$viewport = new Viewport();

$viewport->variabele = 'Hello World';
//nu wijs ik dus eigenlijk deze variabele toe aan de instance van ViewportObject.

echo method_exists($viewport, 'setTemplateFile') ? 'bestaat' : 'bestaat niet';
//geeft als het goed is 'bestaat'

$viewport->setTemplateFile('template');
$viewport->render();
?>


Met als template
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<p><?php echo $this->variabele; ?></p>
<p>
   <span>Als het goed is levert deze op 'bestaat niet'</span>
   <span><?php echo method_exists($this, 'setTemplateFile') ? 'bestaat' : 'bestaat niet'; ?></span>
</p>


Hiermee heb ik dus simpele templates in PHP, een beetje orde in mijn variabelen, en geen toegang tot methods van mijn viewport die ik niet hoor te hebben vanuit mijn template.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Het verschil
  2. __get()
  3. __set()
  4. __isset() & __unset()
  5. __call()
  6. Dingen om rekening mee te houden
  7. Mogelijke toepassing

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.