我想知道是否可以从名称间隔文件调用函数。
目前,下面的代码会产生错误。我知道可以传递整个命名空间,但是使用U的别名是否有更自动化的方式?
use Helpers\User as U;
$t = call_user_func('U\something', 'test');
var_dump($t);
更新
我解决这个问题的方法是在该名称间隔文件中创建一个函数,该文件将间隔返回文件名。
/**
*
* pntfn = Prepend namespace to function name
*
* @param $fn
*
* @return string
*/
function _pntfn($fn) {
return __NAMESPACE__.'\\'.$fn;
}
然后让我在文件中执行以下操作
use Helpers\Users as U;
如果我想从我的Users命名空间文件中编写(函数式编程)函数,我会执行以下操作;
$get_username_upper = F\compose('strtoupper', U\_pntfn( 'get_username' ));
不是我最喜欢的实现,但现在可以使用。 con,是你必须将它添加到你的所有名称间隔函数文件。
答案 0 :(得分:0)
麻烦是resources :task do
member do
resources :management, module: 'task_management', shallow: true
end
end
resources :activity do
member do
resources :management, module: 'activity_management', shallow: true
end
end
在编译时解决,所以调用:
resources :task do
member do
match '/management' => 'task_management#index', :via => :get
match '/management/:id' => 'task_management#show', :via => :get
match '/management' => 'task_management#create', :via => :post
match '/management' => 'task_management#update', :via => :put
match '/management' => 'task_management#delete', :via => :delete
end
end
直译为:
U
这可能仍然无效,因为我知道我们也有指令U\something
,所以你可能也想检查一下。
无论如何,字符串Helpers\User\something
是一个运行时常量,这意味着此时use function
实际上并未引用任何内容。所以不,不幸的是,这是不可能的。