我无法使用composer加载本地类。
目录结构和关键文件如下:
/vendor/pisukes/hello-world/composer.json
/vendor/pisukes/hello-world/src/HelloWorld.php
/vendor/autoload.php
/html/index.php
/composer.json
helloworld:下的Composer.json
{
"name": "pisukes/hello-world",
"type": "library",
"minimum-stability": "dev",
"autoload": {
"psr-4": {
"HelloWorld\": "src/"
}
}
}
根目录下的Composer.json:
{
"repositories": [
{
"type": "path",
"url": "./vendor/pisukes/hello-world"
}
],
"require": {
"pisukes/hello-world": "@dev"
}
}
"composer update"的输出没有显示错误:
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
HelloWorld.php:
namespace HelloWorld;
class SayHello
{
public static function world()
{
return 'Hello World!';
}
}
index.php:
require_once '../vendor/autoload.php';
use HelloWorldSayHello;
echo SayHello::world();
当我运行"php-index.php"时,我得到一个未找到类的错误:
php致命错误:未捕获错误:class'HelloWorld\SayHello'
如果我将HelloWorld.php移到.html目录,并相应地更新require_once语句,我就会得到预期的输出。。。
我使用
composer dumpautoload-o解决了这个问题
请注意,我尝试过"composer dumpautoload",但没有成功,我需要使用标志-o才能使其工作。
根据Composer的帮助:
-o,--optimize优化PSR0和PSR4包以加载类映射,有利于生产