【问题标题】:Loading local package using Composer (PHP)使用 Composer (PHP) 加载本地包
【发布时间】:2020-03-22 03:24:11
【问题描述】:

我无法使用 composer 加载本地类。

目录结构及关键文件如下:

/vendor/pisukes/hello-world/composer.json
/vendor/pisukes/hello-world/src/HelloWorld.php
/vendor/autoload.php
/html/index.php
/composer.json

hello-world下的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 HelloWorld\SayHello;
echo SayHello::world();

当我运行“php index.php”时,我得到一个类未找到错误:
PHP 致命错误:未捕获错误:类 'HelloWorld\SayHello'

如果我将 HelloWorld.php 移动到 /html 目录并相应地更新 require_once 语句,我会得到预期的输出...

【问题讨论】:

    标签: composer-php


    【解决方案1】:

    我设法解决了这个问题:
    composer dumpautoload -o

    请注意,我已经尝试过“composer dumpautoload”但没有成功,我需要使用标志 -o 来使其工作。

    根据 Composer 帮助:
    -o, --optimize 优化 PSR0 和 PSR4 包以加载类映射,适合生产

    【讨论】:

      猜你喜欢
      • 2017-03-04
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      相关资源
      最近更新 更多