Ik heb een (heel) eenvoudig template systeempje gemaakt, maar ondervind iets raars. Zie onderstaande code. Op het moment dat theme('menu', 'knop 2') wordt uitgevoerd, krijg ik de error "[] operator not supported for strings". Komt dus door de code onder default in de switch. MAAR tijdens het debuggen viel me op dat dit wel werkte:
Bij dezelfde code als hieronder, maar dan buiten de functie, krijg ik geen foutmelding! Ik zit nu al een uur te staren op onderstaande code, en heb al van alles uitgeprobeerd (uitcommenten, etc.) maar ik blijf maar de foutmelding krijgen. Wie ziet waar de voud zit?
PHP:
1
2
3
| $type = 'menu'; $content = 'knop 1'; $theme[$type][] = $content; |
Bij dezelfde code als hieronder, maar dan buiten de functie, krijg ik geen foutmelding! Ik zit nu al een uur te staren op onderstaande code, en heb al van alles uitgeprobeerd (uitcommenten, etc.) maar ik blijf maar de foutmelding krijgen. Wie ziet waar de voud zit?
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
| function theme($type, $content, $scope = null) { global $theme; if (!isset($theme[$type])) { $theme[$type] = $content; } else { switch ($type) { case 'buttons': foreach($content as $button) { $theme['buttons'][] = '<li>'. $button; } break; case 'script': $script = sprintf('<script type="text/javascript" src="%s"></script>', $path); if ($scope && $scope == 'footer') { return theme('footer', $script); } else { return theme('head', $script); } break; case 'style': $style = sprintf('<style type="text/css" media="all">@import "%s";</style>', $path); return theme('head', $style); break; default: $theme[$type][] = $content; } } } theme('menu', 'knop 1'); theme('menu', 'knop 2'); |
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."