簡體   English   中英

Composer autoload找不到類

[英]Composer autoload can't find class

我正在嘗試創建一個MVC結構並使用composer來自動加載所有內容。
但我一直收到這個錯誤:

致命錯誤:未捕獲錯誤:第5行的C:\\ wamp64 \\ www \\ activity \\ Public \\ index.php中找不到類'App \\ Init'

|MainFolder  
    |App  
    |Public  
    |Vendor  
        |ACT  
        |composer  
        |autoload.php  
    |composer.json  

composer.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"
    }
}

應用程序\\的init.php

<?php    
namespace App;

class Init
{
    public function __construct()
    {
        echo "Loaded!!";
    }
}

公共\\的index.php

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

$init = new \App\Init;  

\\賣方\\作曲家\\ autoload_namespaces.php

<?php    

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

return array(
    "ACT" => array($vendorDir . false),
    "App" => array($baseDir . '/'),
);  

Obs:已經做過composer dump-autoload

  1. 不要手動將東西放入/vendor
  2. 雖然堅持#1,但不要在autoload引用/vendor ,這些軟件包應該都有自己的全功能自動加載器,作曲家會找到並使用它們。
  3. 您需要在自動加載中指定更多路徑。

"autoload":{
    "psr-4": {
        "App\\": "App/"
    }
},

想想它就像告訴作曲家“在下面的文件夾中查找以命名空間foo\\bar\\開頭的東西”。

注意 :文件夾名稱不必與命名空間匹配。

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

{
  "autoload": {
    "psr-4": {
      "sammitch\\meatstacker\\": "src/"
    }
  }
}

然后:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM