PSR-4目录结构和命名空间的一组功能?

时间:2015-09-07 17:06:15

标签: php psr-4

我有一组有用的PHP函数。我想为他们创建一个符合PSR-4的存储库,但我找到的指南(123)似乎只谈论自动加载的类。

例如,我的文件如下,每个文件有一个函数:

my_cool_function1.php
my_cool_function2.php
... etc.

如何从中创建符合PSR-4的库?

2 个答案:

答案 0 :(得分:6)

您无法找到PSR-4自动加载文件的任何文档而不是类的原因,因为specification状态 - 它是专为自动加载类而设计的。

直接取自官方规格:

  

此PSR描述了从文件路径自动加载的规范。它完全可互操作,除了包括PSR-0在内的任何其他自动加载规范外,还可以使用它。此PSR还描述了根据规范放置将自动加载的文件的位置。

更具体地说;

  

术语“ class ”指的是接口 traits 和其他类似的结构。

具有功能的文件实际上并不是类似的结构。

要自动加载这些文件,您需要使用files自动加载:

"autoload": {
    "files": [
        "src/my_cool_function1.php",
        "src/my_cool_function2.php"
    ],
    "psr-4": {
        "SomeNamespace\\": "src/YourNamespace/"
    }
}

你会注意到,psr-4规范(通常)映射到命名空间。

答案 1 :(得分:0)

别忘了可以在类中使用静态函数,以便PSR-4可以加载它们

class MyClass {
    public static my_cool_function1() {}
}

然后,您可以使用冒号运算符将它们作为普通函数调用:

MyClass::my_cool_function1() {}