Mogelijke toepassing
Ik zelf gebruik nu overloading in mijn Viewport-klassen. Even in het klein:
Code (php)
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
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();
?>
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)
1
2
3
4
5
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>
<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.
Inhoudsopgave
- Het verschil
- __get()
- __set()
- __isset() & __unset()
- __call()
- Dingen om rekening mee te houden
- Mogelijke toepassing