Composer 自动加载找不到类

Pla*_*Pro 3 php autoload composer-php

我正在尝试创建一个 MVC 结构并使用 Composer 自动加载所有内容。
但我不断收到此错误:

致命错误:未捕获的错误:在第 5 行的 C:\wamp64\www\activity\Public\index.php 中找不到 Class 'App\Init'

|MainFolder  
    |App  
    |Public  
    |Vendor  
        |ACT  
        |composer  
        |autoload.php  
    |composer.json  
Run Code Online (Sandbox Code Playgroud)

作曲家.json:

{
    "name": "vendor/activity",
    "description": "descrip",

    "require": {
        "php": ">=5.6.25"
    },

    "authors":[
        {
            "name": "John Doe",
            "email": "johndoe@gmail.com"
        }
    ],

    "autoload":{
        "psr-4": {
            "ACT\\": "vendor/",
            "App\\": "/"
        }
    },
    "config":{
        "bin-dir": "bin"
    }
}
Run Code Online (Sandbox Code Playgroud)

应用\init.php

<?php    
namespace App;

class Init
{
    public function __construct()
    {
        echo "Loaded!!";
    }
}
Run Code Online (Sandbox Code Playgroud)

公共\index.php

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

$init = new \App\Init;  
Run Code Online (Sandbox Code Playgroud)

\Vendor\composer\autoload_namespaces.php

<?php    

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    "ACT" => array($vendorDir . false),
    "App" => array($baseDir . '/'),
);  
Run Code Online (Sandbox Code Playgroud)

obs:已经做了 composer dump-autoload

Sam*_*tch 5

  1. 不要手动将东西放入/vendor.
  2. 在坚持 #1 的同时,不要/vendor在 中引用autoload,这些包都应该有自己的全功能自动加载器,作曲家会找到并使用它们。
  3. 您需要在自动加载中指定更多路径。

 

"autoload":{
    "psr-4": {
        "App\\": "App/"
    }
},
Run Code Online (Sandbox Code Playgroud)

把它想象成告诉作曲家“foo\bar\在以下文件夹中查找以命名空间开头的东西”。

注意:文件夹名称不必与命名空间匹配。

例如:遵循Vendor\Package\PSR/Composer的建议方案

{
  "autoload": {
    "psr-4": {
      "sammitch\\meatstacker\\": "src/"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

进而:

  • \sammitch\meatstacker\Client 映射到 src/Client.php
  • \sammitch\meatstacker\Bread\Rye 映射到 src/Bread/Rye.php
  • 等等