Composer 自动加载找不到 class
Composer autoload can't find class
我正在尝试创建 MVC 结构并使用 composer 自动加载所有内容。
但我不断收到此错误:
Fatal error: Uncaught Error: Class 'App\Init' not found in C:\wamp64\www\activity\Public\index.php on line 5
|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"
}
}
App\init.php
<?php
namespace App;
class Init
{
public function __construct()
{
echo "Loaded!!";
}
}
Public\index.php
<?php
require_once '../vendor/autoload.php';
$init = new \App\Init;
\Vendor\composer\autoload_namespaces.php
<?php
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
"ACT" => array($vendorDir . false),
"App" => array($baseDir . '/'),
);
Obs:已经做了 composer dump-autoload
- 不要手动把东西放在
/vendor
.
- 在坚持#1 的同时,不要在
autoload
中引用 /vendor
,这些包应该都有自己的功能齐全的自动加载器,作曲家会找到并使用。
- 您需要在自动加载中指定更多路径。
"autoload":{
"psr-4": {
"App\": "App/"
}
},
把它想象成告诉作曲家 "look for things starting with the namespace foo\bar\
in the following folder"。
注意:文件夹名称不必与命名空间匹配。
例如:遵循 PSR/Composer
的建议 Vendor\Package\
方案
{
"autoload": {
"psr-4": {
"sammitch\meatstacker\": "src/"
}
}
}
然后:
\sammitch\meatstacker\Client
映射到 src/Client.php
\sammitch\meatstacker\Bread\Rye
映射到 src/Bread/Rye.php
- 等等
我正在尝试创建 MVC 结构并使用 composer 自动加载所有内容。
但我不断收到此错误:
Fatal error: Uncaught Error: Class 'App\Init' not found in C:\wamp64\www\activity\Public\index.php on line 5
|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"
}
}
App\init.php
<?php
namespace App;
class Init
{
public function __construct()
{
echo "Loaded!!";
}
}
Public\index.php
<?php
require_once '../vendor/autoload.php';
$init = new \App\Init;
\Vendor\composer\autoload_namespaces.php
<?php
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
"ACT" => array($vendorDir . false),
"App" => array($baseDir . '/'),
);
Obs:已经做了 composer dump-autoload
- 不要手动把东西放在
/vendor
. - 在坚持#1 的同时,不要在
autoload
中引用/vendor
,这些包应该都有自己的功能齐全的自动加载器,作曲家会找到并使用。 - 您需要在自动加载中指定更多路径。
"autoload":{
"psr-4": {
"App\": "App/"
}
},
把它想象成告诉作曲家 "look for things starting with the namespace foo\bar\
in the following folder"。
注意:文件夹名称不必与命名空间匹配。
例如:遵循 PSR/Composer
的建议Vendor\Package\
方案
{
"autoload": {
"psr-4": {
"sammitch\meatstacker\": "src/"
}
}
}
然后:
\sammitch\meatstacker\Client
映射到src/Client.php
\sammitch\meatstacker\Bread\Rye
映射到src/Bread/Rye.php
- 等等