PSR4 VS PSR0
1.在类名中使用下划线没有任何特殊含义。
2. 命名空间与文件目录的映射方法有所调整。
假如我们有一个命名空间:
但是按照PSR4标准,映射后的文件目录就会是: src/class.php
1.在类名中使用下划线没有任何特殊含义。
2. 命名空间与文件目录的映射方法有所调整。
假如我们有一个命名空间:
Foo/class
Foo 是顶级命名空间,其存在着用户定义的与目录的映射关系:
"Foo/" => "src/"
按照PSR0标准,映射后的文件目录是: src/Foo/class.php
但是按照PSR4标准,映射后的文件目录就会是: src/class.php
这样避免了因名空间太长导致目录层次太深,且使得命名空间和文件目录的映射关系更加灵活。
再举一个栗子:
psr-0风格
-vendor/
| -vendor_name/
| | -package_name/
| | | -src/
| | | | -Vendor_Name/
| | | | | -Package_Name/
| | | | | | -ClassName.php # Vendor_Name\Package_Name\ClassName
| | | -tests/
| | | | -Vendor_Name/
| | | | | -Package_Name/
| | | | | | -ClassNameTest.php # Vendor_Name\Package_Name\ClassName
PSR-4风格
-vendor/
| -vendor_name/
| | -package_name/
| | | -src/
| | | | -ClassName.php # Vendor_Name\Package_Name\ClassName
| | | -tests/
| | | | -ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest
注意:
psr-0 命名空间,Vendor_Name,类名是大小写敏感的。