我正在关注https://stackoverflow.com/questions/62617/whats-the-best-way-to-separate-php-code-and-html
中的PHP模板示例我的模板是:
class ViewTemplate {
private $args;
private $file;
public function __get($name) {
return $this->args[$name];
}
public function __construct($file, $args = array()) {
$this->file = $file;
$this->args = $args;
}
public function render() {
include $this->file;
}
}
我正在使用它:
$event = "calendar";
$view = new ViewTemplate('views/main.php', array(
'topNav' => new ViewTemplate('views/topNav.php', array('login' => $login)),
'leftPane' => new ViewTemplate('views/leftPane.php', array('login' => $login)),
'mainContentNav' => new ViewTemplate('views/mainContentNav.php', array('login' => $login, 'event' => $event)),
'mainContent' => new ViewTemplate('views/mainContent/' + $event + '.php', array('login' => $login, 'event' => $event)),
'footer' => new ViewTemplate('views/footer.php', array('login' => $login))
));
我得到了:
[12-Apr-2013 21:33:42 UTC] PHP Warning: include(0): failed to open stream: No such file or directory in C:\Users\Owner\PhpstormProjects\CRM\admin\classes\Lifestyle\ViewTemplate.php on line 23
[12-Apr-2013 21:33:42 UTC] PHP Warning: include(): Failed opening '0' for inclusion (include_path='C:\Users\Owner\wamp\bin\php\php5.3.13\pear;C:\Users\Owner\PhpstormProjects\CRM\admin\classes\Lifestyle\classes') in C:\Users\Owner\PhpstormProjects\CRM\admin\classes\Lifestyle\ViewTemplate.php on line 23
问题似乎是以下几点,我正在初始化数组:
'mainContent' => new ViewTemplate('views/mainContent/' + $event + '.php', array('login' => $login, 'event' => $event)),
如果我改为:
'mainContent' => new ViewTemplate('views/mainContent/calendar.php', array('login' => $login, 'event' => $event)),
然后它可以工作,但它让我厌倦了我想要的动态用例。
是什么给出的?
答案 0 :(得分:3)
'mainContent' => new ViewTemplate('views/mainContent/' + $event + '.php', array('login' => $login, 'event' => $event)),
PHP不会以与JS相同的方式连接。在PHP中,连接运算符是.
。
'mainContent' => new ViewTemplate('views/mainContent/' . $event . '.php', array('login' => $login, 'event' => $event)),
是对的。
答案 1 :(得分:1)
PHP uses .
for concatenation。 +
仅用于添加。
'views/mainContent/' . $event . '.php'
// ^ ^