PHP:通过PSR-4自动加载说没有找到类

  • 本文关键字:加载 通过 PSR-4 PHP php
  • 更新时间 :
  • 英文 :


我试图在我的src文件夹中使用一个类,DependencyContainer,但它说类没有找到?

指数:

<?php
$dc = new MangoDependencyContainer();

文件结构:

src/
DependencyContainer.php
index.php
composer.json

composer.json:

{
"name": "mqwerty/ioc-container",
"type": "library",
"require": {},
"autoload": {
"psr-4": {
"Mango\": "src/"
}
}
}

DependencyContainer类:

<?php
declare(strict_types = 1);
namespace Mango;
class DependencyContainer
{
}

首先,您需要在索引中添加自动加载文件,如下所示

require __DIR__ . '/vendor/autoload.php';

你的index.php会像这样

<?php
require __DIR__ . '/vendor/autoload.php';
$dc = new MangoDependencyContainer();

它会解决你的问题

自动加载不会自动发生;composer的设置是为了管理基于composer.json的PSR设置的PSR自动加载的创建和更新。

在命令行中执行composer install;这将基于你的composer.json在供应商文件夹中生成自动加载文件,并创建一个composer.lock文件,即使你没有任何依赖。

在这里,你需要在执行代码之前引导自动加载文件。

嘿,这个问题已经解决了很多次了,但我还是要解释一下,以防你不明白别人的问题。

所以我曾经也遇到过这个问题,你可以在我的个人资料中找到它。

psr基于您的路径工作。当你设置SRC路径时,

例如,你的布局是这样的:

vendor 
your-vendor-name
your-package
src
App.php
Class.php
composer.json

那么你的psr位置应该在:"/src">

之后和它之前应该像这样:

"your-vendor-name 软件包">

当使用一个类时,确保你编写的类名以大写字母开头,并且里面的类与文件名匹配,确保类的命名空间是这样的your-vendor-nameyour-package

和使用


$app = new your-vendor-nameyour-package(then the class name you want to use, so lets say, Class.php, then you would put Class() here)

希望这能解决你的问题

相关内容

  • 没有找到相关文章

最新更新