PHP spl_自动加载_寄存器不与使用函数导入一起工作

PHP spl_自动加载_寄存器不与使用函数导入一起工作,php,autoload,spl-autoload-register,Php,Autoload,Spl Autoload Register,使用spl_autoload_寄存器时,通过use function Namespace\Subamespace\aFuncphp导入的函数找不到该函数。未调用已注册的autolaod函数。如果我手动include Path/To/File.php,那么use语句可以工作,包含的函数也可以工作。解决方案 autoload.php function loader($class){ printf("in loader"); /*code to load file*/ }

使用spl_autoload_寄存器时,通过
use function Namespace\Subamespace\aFunc
php导入的函数找不到该函数。未调用已注册的autolaod函数。如果我手动
include Path/To/File.php
,那么use语句可以工作,包含的函数也可以工作。解决方案

autoload.php

function loader($class){
  printf("in loader");
  /*code to load file*/
}

spl_autoload_register('loader');
index.php

include_once('autoload.php');

use function Namespace\Subnamespace\aFunc;

$output = aFunc();
Namespace/Subnamespace.php

<?php namespace Namespace\Subnamespace;

function aFunc() {
  //do stuff
}

这是否回答了您的问题?我理解use不会导入函数,但我不理解为什么我在autoload.php中使用spl_autoload_register()的autoload函数没有被调用,即使我正在引用名称空间并调用该函数。如果四处搜索,你会发现它对函数不起作用。它只适用于班级。因此,您仍然必须包含函数文件。一种解决方法是将函数放在一个类中,并使它们成为静态的(即单例),然后将它们称为class::method。@TimBrownlaw yes似乎是这样的;自动加载仅适用于类、特征和接口。谢谢你的澄清。这能回答你的问题吗?