[英]PHP: Autoloading via PSR-4 is saying class not found
我试图在我的 src 文件夹DependencyContainer
中使用 class ,但它说 class 找不到?
指数:
<?php
$dc = new \Mango\DependencyContainer();
文件结构:
src/
DependencyContainer.php
index.php
composer.json
作曲家.json:
{
"name": "mqwerty/ioc-container",
"type": "library",
"require": {},
"autoload": {
"psr-4": {
"Mango\\": "src/"
}
}
}
依赖容器 class:
<?php
declare(strict_types = 1);
namespace Mango;
class DependencyContainer
{
}
首先,您需要像这样在索引中添加自动加载文件
require __DIR__ . '/vendor/autoload.php';
而你的index.php
会像这样
<?php
require __DIR__ . '/vendor/autoload.php';
$dc = new \Mango\DependencyContainer();
它会解决你的问题
自动加载不只是自动发生; composer 设置为根据composer.json
的 PSR 设置来管理 PSR 自动加载的创建和更新。
在 CLI 中composer install
; 这将根据您的composer.json
在供应商文件夹中生成自动加载文件并创建一个composer.lock
文件,即使您没有任何依赖项。
从那里,您需要在执行代码之前引导自动加载文件。
嘿,这已经解决了很多次,但我还是会解释一下,以防你不理解其他问题。
所以我也遇到过这个问题,你可以在我的个人资料上找到它。
psr 根据您的路径工作。 当你设置你的 src 路径时,它就是从那里开始的,
例如,您的布局类似于以下内容:
vendor
your-vendor-name
your-package
src
App.php
Class.php
composer.json
那么你的 psr 位置应该有这个:
“/src”
之前应该是这样的:
“您的供应商名称\您的包裹\”
when using a class, make sure you composer class names start with an uppercase letter and the class inside matches the file name, make sure the class namespaces are something like this \your-vendor-name\your-package
并使用
$app = new \your-vendor-name\your-package\(then the class name you want to use, so lets say, Class.php, then you would put Class() here)
希望这可以解决您的问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.