Versio

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
  • Gesponsorde koppelingen
Get Adobe Flash player