Composer / PSR - 如何自动加载功能?

时间:2014-06-11 19:29:39

标签: composer-php autoload psr-0

如何自动加载辅助函数(在任何类之外)?我可以在composer.json中指定某种应该首先加载的引导程序文件吗?

3 个答案:

答案 0 :(得分:63)

您可以autoload specific files编辑composer.json文件,如下所示:

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

(谢谢Kint

答案 1 :(得分:2)

经过一些测试,我得出的结论是,将命名空间添加到包含函数的文件中,并设置composer来自动加载此文件似乎无法在需要自动加载路径的所有文件中加载此功能。

要进行合成,这将在所有位置自动加载函数:

composer.json

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

src / greetings.php

<?php
    if( ! function_exists('greetings') ) {
        function greetings(string $firstname): string {
            return "Howdy $firstname!";
        }
    }
?>

...

但这不会在自动加载的所有需求中加载您的函数:

composer.json

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

src / greetings.php

<?php
    namespace You;

    if( ! function_exists('greetings') ) {
        function greetings(string $firstname): string {
            return "Howdy $firstname!";
        }
    }
?>

您将使用use function ...;调用函数,如下所示:

example / example-1.php

<?php
    require( __DIR__ . '/../vendor/autoload.php' );

    use function You\greetings;

    greetings('Mark'); // "Howdy Mark!"
?>

答案 2 :(得分:-3)

  1. composer.json中添加自动加载信息
{
    "autoload": {
        "psr-4": {
            "Vendor\\Namespace\\": "src/"
        }
    }
}
  1. OwnFunctions.php文件夹中使用函数创建一个src/Functions
// recommend
// http://php.net/manual/en/control-structures.declare.php
declare(strict_types=1);

namespace Vendor\Namespace\Functions\OwnFunctions;

function magic(int $number): string {
    return strval($number);
}
  1. 在您的index.php中要求作曲家自动加载
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';

use function Vendor\Namespace\Functions\OwnFunctions\magic;

echo magic(1);

// or you can use only OwnFunctions namespace
use Vendor\Namespace\Functions\OwnFunctions;

echo OwnFunctions\magic(1);

这也可以用const

完成
use const Vendor\Namespace\Functions\OwnFunctions\someConst;
echo someConst;

Official docs