一直對psr0和4瞭解不是很透徹,雖然官方已經廢棄了psr0,可是發現composer仍是對psr0向下兼容,因此也花時間從composer的加載代碼中瞭解了一下他們的區別,具體以下:php
1.在composer中定義的NS,psr4必須以\結尾不然會拋出異常,psr0則不要求composer
2.psr0裏面最後一個\以後的類名中,若是有下劃線,則會轉換成路徑分隔符,如Name_Space_Test會轉換成Name\Space\Test.php。在psr4中下劃線不存在實際意義psr
3.psr0有更深的目錄結構,好比定義了NS爲 Foo\Bar=>vendor\foo\bar\src,
use Foo\Bar\Tool\Request調用NS。
若是以psr0方式加載,實際的目錄爲vendor\foo\bar\src\Foo\Bar\Tool\Request.php
若是以psr4方式加載,實際目錄爲vendor\foo\bar\src\Tool\Request.php異常