我在命名空间中的服务类中有一个比较函数:
Company\Product\Services\Specific
我导入控制器,如:
use Company\Product\Service\Specific as SpecificService;
我有一个数组,我想在这个Controller类中排序:
usort ($array, 'SpecificService::sortFunction()');
但是,这会使我的自动加载器运行起来,它会搜索不存在的类文字SpecificService
。但是,我可以解决这个问题:
usort ($array, 'Company\Product\Services\Specific::sortFunction()');
我很挑剔,想要使用我的别名。怎么样?
答案 0 :(得分:1)
是的,你可以这样做:
use SomeNamespace\String\Tools as StringTools;
然后,在你的方法中:
$arr = ['a', 'c', 'e', 'b'];
$func = function ($a, $b) {
return StringTools::cmp($a, $b);
// or
// $st = new StringTools();
// return $st->cmp($a, $b);
// if cmp isn't static
};
usort($arr, $func);
假设:
public static function cmp($a, $b)
{
// do comparison here
return strcmp($a, $b);
}
并且它位于SomeNamespace\String\Tools as StringTools;
命名空间中。
这样,您的自动加载器应该可以正常工作
如果方法不是静态的,那么你将不得不在anonymus函数中实例化类