便利な PHP 関数のセットがあります。それらの PSR-4 準拠のリポジトリを作成したいのですが、私が見つけたガイド ( 1、2、3 ) は、自動ロード用のクラスについてのみ説明しているようです。
たとえば、私のファイルは次のとおりで、ファイルごとに 1 つの関数があります。
my_cool_function1.php
my_cool_function2.php
... etc.
それらから PSR-4 準拠のライブラリを作成するにはどうすればよいですか?
クラスではないPSR-4自動ロードファイルのドキュメントを見つけることができない理由は、仕様に記載されているように、クラスの自動ロード用に設計されているためです。
公式仕様から直接取得:
この PSR は、ファイル パスからクラスを自動ロードするための仕様について説明しています。これは完全に相互運用可能であり、PSR-0 を含む他のオートローディング仕様に加えて使用できます。この PSR には、仕様に従って自動ロードされるファイルを配置する場所も記述されています。
すなわち;
「クラス」という用語は、クラス、インターフェース、特性、およびその他の同様の構造を指します。
関数を含むファイルは、実際には同様の構造ではありません。
これらのファイルを自動ロードするには、次を使用して自動ロードする必要がありますfiles
。
"autoload": {
"files": [
"src/my_cool_function1.php",
"src/my_cool_function2.php"
],
"psr-4": {
"SomeNamespace\\": "src/YourNamespace/"
}
}
このことから、psr-4 仕様が (通常) 名前空間にマップされていることがわかります。
PSR-4 がそれらをロードできるように、クラスで静的関数を使用できることを忘れないでください。
class MyClass {
public static my_cool_function1() {}
}
次に、コロン演算子を使用して通常の関数として呼び出すことができます。
MyClass::my_cool_function1() {}