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)
{
"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)
<?php
namespace App;
class Init
{
public function __construct()
{
echo "Loaded!!";
}
}
Run Code Online (Sandbox Code Playgroud)
<?php
require_once '../vendor/autoload.php';
$init = new \App\Init;
Run Code Online (Sandbox Code Playgroud)
<?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
/vendor./vendor在 中引用autoload,这些包都应该有自己的全功能自动加载器,作曲家会找到并使用它们。
"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