繁体   English   中英

OOP PHP 项目中的 Includes vs Classes 文件夹有什么区别?

[英]What is the difference between Includes vs Classes folder in OOP PHP project?

我正在尝试使用面向 object 的编程和 smarty 模板创建 php 站点。

只是通过书来制作我应该如何构建结构?

我见过有些人制作 Includes 文件夹和 Classes 文件夹,有些人将 Classes 放在 Includes 文件夹中,哪种方式是正确的? object 面向编程的包含文件夹是什么?

您应该使用自动加载来加载您的类。

此外,您的自动装载机应符合PSR-0标准(由 PHP 标准工作组编写)

https://gist.github.com/221634上提供了符合 PSR-0 的自动加载器示例

没有正确的方法,也没有教科书的标准。 PHP 项目中的文件夹结构由您自行组织,但您喜欢。 不同的人 go 有不同的约定。

也许有些人称它为includes ,因为它包含通常包含在大多数其他主要脚本中的文件,有些人称它为classes ,因为它包含 class 文件。 由于incliudes文件是包含文件,因此可能它们使classes成为包含的子文件夹。 但这一切都完全是主观的和优先的; 这绝不是一个标准。

据说没有标准文件夹,但includes/是相当主流的,有些人可能会认为这是事实上的标准。 这真的取决于你。

只有一条规则:它必须有意义。 严重地。 代码必须是可读和可维护的。 最顶层文件夹的名称与此无关。 如何在该文件夹下组织课程更为重要。 作为个人喜好,我会使用“类”或“模型”,因为这就是文件的内容。 “包含”让我想起了程序化编程时代。

但是,您的应用程序应该遵循的更重要的原则是 MVC(模型-视图-控制器)架构。 我建议您阅读该主题。 还有几个很好的框架,这样您就不需要编写样板代码。

框架的问题是,您通常几乎没有选择命名文件夹的选择,因为它们已经坚信“正确”的做事方式。 这也使您提出的命名问题不太相关。

对于 MVC 应用程序,您的类的作用通常只是封装您的应用程序的数据 model。 这就是为什么我经常使用“模型”作为文件夹的名称,而不是类或包含。

在为 OO PHP 构建包含时,我会从 Java 中获得灵感。 对于依赖于另一个 class 的每个 class,请在文件顶部使用以下语句:

require_once 'classFolder/SomeClass.php'

该语句将检查文件是否已被包含,如果是,则不再包含(要求)它。 如果找不到所需的文件,则会导致致命的 E_COMPILE_ERROR 级别错误。 换句话说,它会停止脚本,而 include_once() 只会发出一个警告 (E_WARNING) 允许脚本继续。

使用这种结构意味着所有 class 文件都指定了所有必需的包含,因此会有一些重复,例如某些类可能需要同一个文件。 然而,由于 require_once 的工作方式,这带来的开销很小,并且使代码对更改非常有弹性。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM