当前位置: 首页 > 知识库问答 >
问题:

psr-4中的更多路径

益智明
2023-03-14

我正在学习名称空间和psr-4自动加载。在我的应用程序中,我只能加载composer中psr-4下第一个对象的类。json。

我会解释得更好,这是我的情况:

文件夹结构:

app
- core
-- Foo
--- Foo.php
src
- Bar
-- Bar.php

在composer.json

{
    "autoload": 
    {
        "psr-4":
        {
            "core\\"  : "app/core/",
            "myapp\\" : "src/"
        }      
    }
}

仅加载app/core下的类。如果我使用\core\Foo\Foo就像一个符咒,但是如果我使用\myapp\Bar\Bar就不起作用了。当然,我用composer dump autoload-o更新了autoload,并尊重区分大小写的字母。

我的错在哪里?提前感谢:-)

共有1个答案

皇甫浩壤
2023-03-14

每个文件中当前的名称空间是什么?根据您在composer中的文件夹结构和设置。json,这些是您应该具有的值:

Bar\Bar。php应该有

<?php

namespace myapp\Bar;

class Bar {}

虽然

Foo\Foo。php应该有

<?php

namespace core\Foo;

class Foo {}

然后,您应该能够使用newmyapp\Bar\Barnewcore\Foo\Foo访问它们。

文件名和类名必须相同,这一点很重要。

 类似资料:
  • 我和许多其他人一样,似乎很难弄清楚何时以及如何使用自动加载。我想我理解作曲家和PSR-0/PSR-4的概念和这需要的目录结构。但是如果我用自己的MVC框架构建自己的项目 > 由于composer自带了自动加载器,它将加载我希望包含在项目中的所有依赖项,如果我不打算将我的网站变成分布式项目,我甚至需要自己的名称空间吗?为什么我不坚持使用include/requires? 最后,如果我采用名称空间,使

  • 问题内容: 最近,我阅读了有关名称空间及其有益之处的信息。我目前正在Laravel中创建一个项目,并尝试从类映射自动加载转到命名空间。但是,我似乎无法理解PSR-0和PSR-4之间的实际区别。 我读过的一些资源是… 自动装弹机之战 Laracasts PSR-4自动加载 PSR-0 PSR-4 我的理解: PSR-4不会将下划线转换为目录分隔符 作曲者的某些特定规则导致目录结构变得复杂,这又使PS

  • 最近我读了一些关于名称空间的文章,以及它们是如何有益的。我目前正在Laravel中创建一个项目,并尝试从类映射自动加载转移到名称空间。然而,我似乎无法理解PSR-0和PSR-4之间的实际区别。 我读到的一些资源是。。。 自动装弹机之战 Laracasts PSR-4自动加载 PSR-0 PSR-4 我的理解是: PSR-4不会将下划线转换为目录分隔符 请举例说明差异。

  • 我开始学习Composer,并正在开发一个系统,在该系统中,我将文件与核心应用程序文件分开,如下所示: 所以,要在composer中设置此设置。json文件并访问所有类/App much/Core会这样吗? 还是有更正确的方法? 我也读过PSR-0和PSR-4的比较,我仍然有点怀疑应该使用哪一种。在我的情况下,我应该实现什么,PSR-0还是PSR-4?

  • 我有一个在本地运行良好的Laravel项目(Mavericks),但是psr-4下的类没有加载到我们的后台服务器(CentOS)上。每次尝试composer更新或运行artisan命令时,我都会收到一个反射“未找到类”错误。 我的所有特定于应用程序的类都存储在我的Laravel项目的app/heatherland下,例如: 我的composer.json包含以下条目: 在本地,psr-4类被添加到

  • 1. 概述 本 PSR 是关于由文件路径 自动载入 对应类的相关规范, 本规范是可互操作的,可以作为任一自动载入规范的补充,其中包括 PSR-0,此外, 本 PSR 还包括自动载入的类对应的文件存放路径规范。 关于「能愿动词」的使用 为了避免歧义,文档大量使用了「能愿动词」,对应的解释如下: 必须 (MUST):绝对,严格遵循,请照做,无条件遵守; 一定不可 (MUST NOT):禁令,严令禁止;