如何在 Composer 中根据需要自动加载辅助函数?

问题描述 投票:0回答:3

假设每个函数有 1 个文件:

/src/Helpers/fooHelper.php

<?php

namespace MyHelper;

function fooHelper() {};

/src/Helpers/barHelper.php

<?php

namespace MyHelper;

function barHelper() {};

我看到有

"autoload": {
    "files": ["src/Helpers/functions.php"]
}

是否可以通过 Composer 按需自动加载这些函数,而不是每次请求?

php composer-php autoload
3个回答
0
投票

是否可以通过 Composer 按需自动加载这些函数,而不是每次请求?

不,PHP 中的函数不支持自动加载。您需要手动加载它们,或者将带有函数声明的文件添加到

autoload.files
中的
composer.json
配置中 - 即使您从不使用它,它们也会在每个请求上加载。

目前唯一明智的解决方法是将助手包装在某个静态类中,该静态类可以毫无问题地自动加载。

class MyHelper {

    public static function fooHelper() {}

    public static function barHelper() {}
}

MyHelper::fooHelper();
MyHelper::barHelper();

0
投票

我之前确实遇到过这个问题,并找到了一个简单的解决方案,我在几个项目中实现了这个问题,没有任何问题

我发现,如果类和函数命名空间匹配,可以在类的构造函数中定义函数。

我的解决方案:

函数文件myfunction.php

namespace Foo;

function myFunction(){
  return "string";
}

某堂课:

namespace Foo;

class myClass{

    public function __construct(){
        include __DIR__.'myfunction.php';
    }

    public function printFunction(){
        echo myFunction();
    }

}

-1
投票

如果您想为每个帮助文件添加它,您应该执行以下操作:

"autoload": {
    "files" : [
        "path_to file_1.php",
        "path_to file_2.php",
        "and so on"
    ]
}

运行命令后应该可以工作:

composer dump-autoload
composer dumpautoload

© www.soinside.com 2019 - 2024. All rights reserved.