Мне интересно, есть ли способ вызвать переменные функции с пространствами имен. В основном я пытаюсь разобрать теги и отправлять их в функции шаблонов, чтобы они могли отображать 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;