首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:通过PSR-4自动加载表示找不到类

PHP:通过PSR-4自动加载表示找不到类
EN

Stack Overflow用户
提问于 2021-02-25 05:10:17
回答 3查看 48关注 0票数 1

我正在尝试使用我的src文件夹DependencyContainer中的类,但它显示找不到类?

索引:

代码语言:javascript
复制
<?php
$dc = new \Mango\DependencyContainer();

文件结构:

代码语言:javascript
复制
src/
    DependencyContainer.php
index.php
composer.json

composer.json:

代码语言:javascript
复制
{
    "name": "mqwerty/ioc-container",
    "type": "library",
    "require": {},
    "autoload": {
        "psr-4": {
            "Mango\\": "src/"
        }
    }
}

DependencyContainer类:

代码语言:javascript
复制
<?php

declare(strict_types = 1);

namespace Mango;

class DependencyContainer
{
}
EN

回答 3

Stack Overflow用户

发布于 2021-02-25 05:17:43

首先,您需要将autoload文件添加到索引中,如下所示

代码语言:javascript
复制
require __DIR__ . '/vendor/autoload.php';

你的index.php会是这样的

代码语言:javascript
复制
<?php

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

$dc = new \Mango\DependencyContainer();

它会解决你的问题

票数 1
EN

Stack Overflow用户

发布于 2021-02-25 06:08:39

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

在您的CLI中执行composer install;这将根据您的composer.json在供应商文件夹中生成自动加载文件,并创建一个composer.lock文件,即使您没有任何依赖项也是如此。

在那里,您需要在执行代码之前引导autoload文件。

票数 0
EN

Stack Overflow用户

发布于 2021-03-06 01:27:49

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

所以我也有过这个问题,你可以在我的个人资料上找到它。

psr根据您的路径工作。当您设置src路径时,

例如,您的布局如下所示:

代码语言:javascript
复制
vendor 
  your-vendor-name
    your-package
      src
        App.php
        Class.php
      composer.json

那么你的psr位置应该在: "/src“之后有这个。

在此之前,它应该类似于以下内容:

“您的供应商名称\您的软件包\”

使用类时,请确保编写器类名称以大写字母开头,并且其中的类与文件名匹配,并确保类命名空间类似于下面的\your-vendor-name\your-package

并使用

代码语言:javascript
复制
$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)

希望这能解决你的问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66358883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档