我试图将自定义命名空间用于我的个人课程。
目录结构(像往常一样):
my_project/ - src/ |- myComponent.class.php \- myWrapper.class.php - vendor |- OtherLibrary \- Symfony - composer.json - index.php
在我的 composer.json 中,我用:
指定我自己的命名空间"autoload": {
"psr-0": {
"my_namespace\\": "src/"
}
}`
然后在我的PHP代码中我有类似的东西:
namespace my_namespace;
class myComponent
{
.... code
}
namespace my_namespace;
require_once __DIR__.'/vendor/autoload.php';
$component = new myComponent();
致命错误:Class' my_namespace \ myComponent'在第5行的/path_to_root/my_project/index.php中找不到
我希望在 my_project / src / 下搜索 myComponent ,如 composer.json 中所指定的那样进入 vendor / composer / autoload_namespaces.php ('my_namespace\\' => array($baseDir . '/src')
)。
当我将命名空间定义到我自己的命名空间时,我希望直接调用我的自定义 myComponent 。我错了吗?
我的代码和我的假设有什么不对? 我该如何解决?
答案 0 :(得分:30)
您自己发现了这些错误,但这里有一个快速收集Composer中有用的自动加载指令的内容:
composer.json
文件中给出的路径中找到此文件。课程myNamespace\myClass
和"psr-0":{"myNamespace\\": "src"}
会尝试加载src/myNamespace/myClass.php
。composer.json
中给出的名称空间前缀,剩余部分被转换为路径," .php"最后添加,并在给定的路径中搜索。课程myNamespace\myClass
和"psr-4":{"myNamespace\\": "src"}
会尝试加载src/myClass.php
。