致命错误:未捕获错误:找不到类'ProjectRouterHello'



这是我第一次使用Composer,我有点Batty试图弄清楚为什么它不拿起我的命名空间。

在我的project/目录中:

├── composer.json
├── composer.lock
├── composer.phar
├── README.md
├── vendor (truncated)
└── src
    ├── Config.php
    ├── Handler.php
    └── Router.php

src/config.php

<?php
$project_root = realpath(__DIR__ . '/..');
$autoload = $project_root . '/vendor/autoload.php';
?>

src/router.php

<?php namespace ProjectRouter;
include_once("Config.php");
require $autoload;
use ProjectHandler;
Hello::world();
?>

src/handler.php

<?php namespace ProjectHandler;
include_once("Config.php");
require $autoload;
class Hello {
    public function world() {
        echo "Hello world!";
    }
}
?>

composer.json

{
    "autoload": {
        "psr-4": {
            "Project\": "src"
        }
    }
}

http://127.0.1.1/project/src/Router.php

致命错误:未被发现的错误:类'Project Router Hello'在/path/path/to/project/src/src/router.php:38(无实际行)stack跟踪:#0 {main}路径/to/project/src/router.php在第38行(不是实际行)

我能够使用外国依赖项,因此我的一般作曲家设置似乎还可以。我只是无法弄清楚自己在自己的名称空间上搞砸了。

您似乎正在误解PSR4的工作方式。

"autoload": {
    "psr-4": {
        "Project\": "src"
    }
}

此配置意味着如果您从自动加载器请求类项目 Handler Hello,它将检查路径srcHandlerHello.php(这不存在。)

如果将目录结构更改为以下内容,则可以使用:

└── src
    ├── Config.php
    ├── Router.php
    └── Handler
        └── Hello.php (renamed from Handler.php)

另外,config.php或router.php都不包含类,它打败了使用类自动加载器的点。

请阅读:http://www.php-fig.org/psr/psr-4/

相关内容

  • 没有找到相关文章

最新更新