【问题标题】:Composer autoloading with PSR4使用 PSR4 自动加载 Composer
【发布时间】:2016-04-05 17:29:58
【问题描述】:

可能是一些微不足道的事情,但我在基本自动加载方面遇到了问题。我想创建沙盒项目只是为了测试新的解决方案,所以我创建了以下结构:

Sandbox
|- index.php
|- composer.json
|- vendor
|  |- {autogenerated content}
|- src
   |- Working.php

文件composer.json 如下所示:

{
    "name": "vendor/sandbox",
    "authors": [
        {
            "name": "foo",
            "email": "bar@example.com"
        }
    ],
    "require": {
        "phpunit/phpunit": "dev-master",
        "phpunit/phpunit-mock-objects": "dev-master"
    },
    "psr-4": {
        "Sandbox\\": "src/"
    }
}

当然,我在更改后运行了composer.update。然后我写了Working.php的琐碎正文:

<?php

namespace Sandbox;

class Working
{
    public function __construct() {
        echo "Hello World";
    }
}

当然还有index.php

<?php
require_once __DIR__ . '/vendor/autoload.php';

use Sandbox\Working;

new Working();

?>

我检查了这些文件的权限只是为了确定,但是当我尝试运行时,我得到了

PHP Fatal error:  Class 'Sandbox\Working' not found in /var/www/Sandbox/index.php on line 6

我意识到这可能是微不足道的,但这里有什么问题?

【问题讨论】:

    标签: php composer-php autoload psr-4


    【解决方案1】:

    在您的 composer.json 处,您缺少 autoload 密钥。 应该是这样的

    "autoload": {
        "psr-4": {
            "Sandbox\\": "src/"
        }
    }
    

    【讨论】:

      【解决方案2】:

      我相信

      "psr-4": {
              "Sandbox\\": "src/"
          }
      

      应该是:

      "autoload": {
          "psr-4": {
            "Sandbox\\": "src/"
          }
      

      所以你的文件是:

      {
          "name": "vendor/sandbox",
          "authors": [
              {
                  "name": "foo",
                  "email": "bar@example.com"
              }
          ],
          "require": {
              "phpunit/phpunit": "dev-master",
              "phpunit/phpunit-mock-objects": "dev-master"
          },
          "autoload": {
              "psr-4": {
                "Sandbox\\": "src/"
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-10
        • 2016-12-08
        • 1970-01-01
        • 1970-01-01
        • 2017-12-26
        • 2016-03-24
        • 1970-01-01
        • 2012-09-30
        • 2015-04-20
        相关资源
        最近更新 更多