Переменные функции с пространствами имен в PHP

Мне интересно, есть ли способ вызвать переменные функции с пространствами имен. В основном я пытаюсь разобрать теги и отправлять их в функции шаблонов, чтобы они могли отображать html`

Вот пример: (я использую PHP 5.3)

// Main php file require_once 'template.php'; foreach (array("javascript","script","css") as $tag) { echo template\$tag(); } // template.php namespace template; function javascript() { return "Hello from javascript"; } function css() { return "Hello from css"; } function script() { return "Hello from script"; } 

Я продолжаю получать ошибку Parse: синтаксическая ошибка, неожиданный T_VARIABLE, ожидающий T_STRING в … в строке 76

Благодаря! Matt

Конечно, вы можете, но, к сожалению, вам нужно использовать call_user_func() для достижения этого:

 require_once 'template.php'; foreach (array("javascript","script","css") as $tag) { echo call_user_func('template\\'.$tag); } 

Пространства имен в PHP довольно новы. Я уверен, что в будущем они исправит это, поэтому мы больше не будем требовать call_user_func() .

Это также будет работать, нет необходимости в call_user_func , просто используйте функцию Docs :

 require_once 'template.php'; $ns = 'template'; foreach (array('javascript', 'script', 'css') as $tag) { $ns_func = $ns . '\\' . $tag; echo $ns_func(); } 

попробуйте

  // Main php file require_once 'template.php'; foreach (array("javascript","script","css") as $tag) { call_user_func("template\\$tag"); // As of PHP 5.3.0 } // template.php namespace template; function javascript() { return "Hello from javascript"; } function css() { return "Hello from css"; } function script() { return "Hello from script"; } 

у вас есть информация здесь

Попробуй это

 $p = 'login'; namespace App\login; $test2 = '\App\\'.$p.'\\MyClass'; $test = new $test2;