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

Composer自动加载-如何从不同文件夹中获取类、特征和接口?

柳弘方
2023-03-14

如何使用作曲家自动加载从不同的文件夹获取类、特征、接口?

其中一些我使用名称空间,例如,

控制器/Foo.php,

namespace MyNamespace;
class Foo
{
    public $message = 'hello Foo';
}

模型/Boo。php

namespace MyNamespace;
class Boo
{
    public $message = 'hello Boo';
}

index.php,

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

use \MyNamespace\Foo;
$Foo = new Foo();
var_dump($Foo);

错误

致命错误:类'MyNamespace\Foo'中找不到C:...

composer.json,

{
    "autoload": {
        "psr-0": {
            "": "ext/",
            "": "controller/",
            "": "model/" 
        }
    }
}

我在许多不同的文件夹中有许多类(它可能会扩展),所以当我在一个新文件夹中有新类时,有没有办法不重新安装composer autoload?

共有1个答案

燕寒
2023-03-14

您必须标准化名称空间和文件夹结构。如果在不同的文件夹中有相同的名称空间,那么很难创建一个简单的逻辑来自动加载它们。尝试在命名空间中使用其他段,如:

namespace MyNamespace\Controller;
class Foo
{
    public $message = 'hello Foo';
}

以及:

namespace MyNamespace\Model;
class Boo
{
    public $message = 'hello Boo';
}

还有你的作曲家。json:

{
    //..
    "autoload": {
        "psr-4": {
             "MyNamespace\\Model\\": "/path/to/model/folder/",
             "MyNamespace\\Controller\\": "/path/to/controller/folder/"
        }
    }
}

设置后,请拨打:

composer dump-autoload
 类似资料:
  • 问题内容: 这就是我自动加载文件夹中所有类的方式, 但是我的文件夹中也有类,我也想自动加载它们-我该怎么办?我应该复制上面的自动加载并仅将路径更改为(但是不是重复吗?)? 谢谢。 编辑: 这些是我在控制器文件夹中的类文件名: 这些是我在模型文件夹中的类文件名: 通常这就是我命名控制器类类的方式(我使用下划线和小写), 这通常是我为模型类类命名的方式(我使用下划线和小写), 问题答案: 您应该命名您

  • 我目前正在制作一个Minecraft Mod Loader。 正如您在上面看到的,我有一个名为Client的类。当Minecraft游戏启动时,启动被调用。现在我有一个名为Mods的文件夹,在调用startup时,我需要将Mods从Mods文件夹加载到ArrayList命名模块中。更深入地说,每个Mod将有一个继承这个模块类的主类 因此,在调用startup时,我需要遍历mods文件夹中的每个Mo

  • Laravel版本5.6 我正试图通过“自动加载”下的文件将一些类添加到我的项目中。 Composer.json 每当我执行时,两个文件都会出现错误,表示找不到文件。 PHP警告:未捕获错误异常:require(C:\laravel projects\project\vendor\composer/./../app/helpers/dbUsers.PHP):无法打开流:C:\laravel pro

  • 这篇文章是对 PHP自动加载功能 的一个总结,内容涉及 PHP自动加载功能 、PHP命名空间、PSR0/PSR4标准 等内容。 一、PHP 自动加载功能 PHP 自动加载功能的由来 在 PHP 开发过程中,如果希望从外部引入一个 Class ,通常会使用 include 和 require 方法,去把定义这个 Class 的文件包含进来。这个在小规模开发的时候,没什么大问题。但在大型的开发项目中,

  • 问题内容: 我刚刚通过Composer安装了Sebastian Bergmann的PHPUnit版本3.7.19,并编写了一个我想进行单元测试的类。 我想将所有类都自动加载到每个单元测试中, 而 不必使用它或将其放在测试的顶部,但这证明很困难! 这是我的目录结构的样子(后跟/斜杠表示目录,而不是文件): composer.json composer.lock composer.phar lib /

  • 我刚刚通过Composer安装了塞巴斯蒂安·伯格曼(Sebastian Bergmann)的PHPUnit版本3.7.19,并编写了一个我想进行单元测试的类。 我想让我的所有类自动加载到每个单元测试中,而不必在测试的顶部使用或,但事实证明这很困难! 这就是我的目录结构(尾随/斜杠表示目录,而不是文件): composer.json returningTest.php bin/ phpUnit 我的