使用Composer(PHP)加载本地包



我无法使用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包以加载类映射,有利于生产

最新更新