一组函数的 PSR-4 目录结构和命名空间?
PSR-4 directory structure and namespacing for a set of functions?
我有一组 PHP 我觉得有用的函数。我想为他们创建一个 PSR-4 兼容的存储库,但我找到的指南 (1,2,3) 似乎只谈论 类 的自动加载。
比如我的文件如下,一个文件一个函数:
my_cool_function1.php
my_cool_function2.php
... etc.
如何从它们创建符合 PSR-4 的库?
您无法找到任何不是 类 的 PSR-4 自动加载文件的文档的原因是,正如 specification 所述 - 它是为自动加载而设计的 [=27] =].
直接取自官方规格:
This PSR describes a specification for autoloading classes from file paths. It is fully interoperable, and can be used in addition to any other autoloading specification, including PSR-0. This PSR also describes where to place files that will be autoloaded according to the specification.
更具体地说;
The term "class" refers to classes, interfaces, traits, and other similar structures.
具有函数的文件实际上并不是一个相似的结构。
要自动加载这些文件,您需要使用 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() {}
我有一组 PHP 我觉得有用的函数。我想为他们创建一个 PSR-4 兼容的存储库,但我找到的指南 (1,2,3) 似乎只谈论 类 的自动加载。
比如我的文件如下,一个文件一个函数:
my_cool_function1.php
my_cool_function2.php
... etc.
如何从它们创建符合 PSR-4 的库?
您无法找到任何不是 类 的 PSR-4 自动加载文件的文档的原因是,正如 specification 所述 - 它是为自动加载而设计的 [=27] =].
直接取自官方规格:
This PSR describes a specification for autoloading classes from file paths. It is fully interoperable, and can be used in addition to any other autoloading specification, including PSR-0. This PSR also describes where to place files that will be autoloaded according to the specification.
更具体地说;
The term "class" refers to classes, interfaces, traits, and other similar structures.
具有函数的文件实际上并不是一个相似的结构。
要自动加载这些文件,您需要使用 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() {}