2013-04-12 76 views
-3

我正在关注的PHP模板实例https://stackoverflow.com/questions/62617/whats-the-best-way-to-separate-php-code-and-htmlPHP:可变扩展

我的模板不解的是:

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)) 
    )); 

我'm getting:

[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

的意见/搜索Maincontent /“+ $事件+名 '.php'= 0 –

+0

PHP JavaScript不。 http://php.net/language.operators.string - 对于一般的指导,请参阅:[?参考 - 这是什么符号意味着PHP(http://stackoverflow.com/q/3737139/2261774) –

回答

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)), 

是正确的。

+0

啊,是的 - 嘿嘿,这里有点语言上的混乱。谢谢 - 那些“如果它是一条蛇,将有位你”之一。 – Lurk21