我正在尝试使用我的src文件夹DependencyContainer中的类,但它显示找不到类?
索引:
<?php
$dc = new \Mango\DependencyContainer();文件结构:
src/
DependencyContainer.php
index.php
composer.jsoncomposer.json:
{
"name": "mqwerty/ioc-container",
"type": "library",
"require": {},
"autoload": {
"psr-4": {
"Mango\\": "src/"
}
}
}DependencyContainer类:
<?php
declare(strict_types = 1);
namespace Mango;
class DependencyContainer
{
}发布于 2021-02-25 05:17:43
首先,您需要将autoload文件添加到索引中,如下所示
require __DIR__ . '/vendor/autoload.php';你的index.php会是这样的
<?php
require __DIR__ . '/vendor/autoload.php';
$dc = new \Mango\DependencyContainer();它会解决你的问题
发布于 2021-02-25 06:08:39
自动加载不是自动发生的;composer被设置为基于composer.json的PSR设置来管理PSR自动加载的创建和更新。
在您的CLI中执行composer install;这将根据您的composer.json在供应商文件夹中生成自动加载文件,并创建一个composer.lock文件,即使您没有任何依赖项也是如此。
在那里,您需要在执行代码之前引导autoload文件。
发布于 2021-03-06 01:27:49
嘿,这个问题已经解决了很多次了,但我还是要解释一下,以防你不理解别人的问题。
所以我也有过这个问题,你可以在我的个人资料上找到它。
psr根据您的路径工作。当您设置src路径时,
例如,您的布局如下所示:
vendor
your-vendor-name
your-package
src
App.php
Class.php
composer.json那么你的psr位置应该在: "/src“之后有这个。
在此之前,它应该类似于以下内容:
“您的供应商名称\您的软件包\”
使用类时,请确保编写器类名称以大写字母开头,并且其中的类与文件名匹配,并确保类命名空间类似于下面的\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)希望这能解决你的问题
https://stackoverflow.com/questions/66358883
复制相似问题