Php 如何在create_函数(或eval)中使用名称空间?

Php 如何在create_函数(或eval)中使用名称空间?,php,cakephp,laravel,Php,Cakephp,Laravel,我在看一些PHP代码,其中除了在代码中使用create\u函数或eval之外没有其他选择(代码有些动态) 无论如何,我的问题是如何在evaledcode中使用名称空间? 有效的代码: $code = "return \Core\Model\Permission::Something;"; create_function('$test', $code); //Works! :) $code = "return Permission::Something;"; create_function('

我在看一些PHP代码,其中除了在代码中使用
create\u函数
eval
之外没有其他选择(代码有些动态)

无论如何,我的问题是如何在
evaled
code中使用名称空间?

有效的代码:

$code = "return \Core\Model\Permission::Something;";
create_function('$test', $code); //Works! :)
$code = "return Permission::Something;"; 
create_function('$test', "use \Core\Model\Permission; " . $code); //Doesn't Work :(

ERROR: Parse error: syntax error, unexpected 'use' (T_USE) 
不起作用的代码:

$code = "return \Core\Model\Permission::Something;";
create_function('$test', $code); //Works! :)
$code = "return Permission::Something;"; 
create_function('$test', "use \Core\Model\Permission; " . $code); //Doesn't Work :(

ERROR: Parse error: syntax error, unexpected 'use' (T_USE) 

我如何修改我的代码,以便当有人在create_function(或eval)中引用
Permission
类时,它会自动引用
\Core\Model\Permission
类?

像这样动态创建函数是非常糟糕的做法。你应该认真考虑不包含代码> EVA<代码> ING Studio的替代解决方案。但由于该应用程序的性质,没有其他选择。。好的是,代码运行在沙箱中,无法通过web访问。@SverriM.Olsen是对的,我确信有更好的方法来解决您尝试执行的任何操作。还有,为什么要用CakePHP和Laravel来标记呢?不管怎样,最初的问题仍然存在。如何在不指定整个路径的情况下引用eval或create_函数中的名称空间?这里您可能运气不好,首先
use
语句是在编译时处理的,因此您必须将其放在函数的名称空间或类声明范围之外,然而,使用
create\u函数创建的函数似乎运行在一个奇怪的全局范围内,它无法拾取导入的类,而普通函数可以。