PSR-4 只适用于小封装吗?

Is PSR-4 just for small package?

看完PSR-4,我觉得适合目录少的小包
如果包很大,它会从子包中加载很多自动加载函数。 (因为我们需要先告诉函数基本目录)
考虑 CMS 或框架

对于这个 CMS 包,PSR-0 是否比 PSR-4 更好?
我的目录结构好吗?
interface 和 abstract 类 应该有自己的目录吗?

Is PSR-4 just for small package?

不,PSR-4 不仅仅适用于小包裹。 Zend 和 Symfony 等标准框架也使用它。

PSR-4 描述了从文件路径自动加载 classes 的规范。 它不会对您的项目规模做出任何假设。它是完全可互操作的,并且可以与任何其他自动加载规范一起使用。这意味着您也可以使用 PSR-0。

Is PSR-0 better for this CMS package than PSR-4?

视情况而定。如果您的系统使用命名空间来避免 classname 与其他供应商发生冲突,那么 PSR-4 是正确的选择。但总的来说:Autoloader 不在乎,他早餐只吃 PSR-0 和 PSR-4 classes。

如果你真的想知道:做一个A/B测试并比较自动加载速度。

Is my directory structure good ?

这取决于:如果您和您的 CMS 或框架的用户喜欢这个结构,那么是的。如果您使用 Composer 进行依赖管理,那么 lib\ framework 可能是一匹死马,因为所有包都位于 vendor 文件夹中。如果您开发 CMS,则框架是供应商依赖项。

Should interface and abstract classes have their own directory?

我建议在同一目录中保留接口或抽象基础 class。

这为您节省了一个文件夹,) 仅用于一两个文件。