在我的项目中,我有一个文件夹libcustom
其中包含Web
文件夹和functions.php
文件。在我的functions.php
中,我有一些函数需要在另一个类中使用,在第一行的这个文件中,我有一个定义的命名空间,如下所示
<?php
namespace Custom;
function abc(){....}
在 Web 文件夹中,我有一些带有命名空间CustomWeb
的类;
在我的composer.json
文件中,我定义了命名空间,如下所示
"Custom\":"lib/custom/"
所以,现在我使用看起来像这样的abc()
use Custom;
$abc = Customabc("abc")
但作为我得到的回应
调用未定义的函数 Custom\abc()
如何解决这个问题?
PSR-4 描述了从文件路径自动加载类的规范。它不包括从文件加载函数。
使用files
自动加载器自动加载每个请求上的函数文件。只要包含自动加载器,这将使您的函数可用:
{
"autoload": {
"files": ["lib/custom/functions.php"]
}
}
由于函数是命名空间的,因此需要使用use
语句导入它们或使用完全限定名称。
如果您的Web
文件夹包含 PSR-4 兼容类,请像以前一样使用 PSR-4 自动加载器加载它们(您可以在composer.json
中定义多个自动加载器)。