PHP call_user_func是一个名称空间别名

时间:2016-03-18 15:13:42

标签: php namespaces alias

我想知道是否可以从名称间隔文件调用函数。

目前,下面的代码会产生错误。我知道可以传递整个命名空间,但是使用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,是你必须将它添加到你的所有名称间隔函数文件。

1 个答案:

答案 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实际上并未引用任何内容。所以不,不幸的是,这是不可能的。