web-dev-qa-db-ja.com

Composer / PSR-関数を自動ロードする方法

ヘルパー関数を自動ロードするにはどうすればよいですか(クラス外)? composer.jsonで、最初にロードする必要があるある種のbootstrap=ファイルを指定できますか?

41
mpen

次のようにcomposer.jsonファイルを編集することで、特定のファイルを自動ロード できます

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

(ありがとう Kint

65
mpen

いくつかのテストの後、関数を含むファイルに名前空間を追加し、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!"
?>
4
Anwar