【问题标题】:What is the difference between Includes vs Classes folder in OOP PHP project?OOP PHP项目中的Includes vs Classes文件夹有什么区别?
【发布时间】:2011-06-07 08:55:02
【问题描述】:

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

只是按照书本制作,我应该如何构建结构?

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

【问题讨论】:

  • 请考虑使用MVC pattern(这将是向前迈出的一步),这可能会使这个问题过时。

标签: php oop class


【解决方案1】:

你应该使用Autoloading 来加载你的类。

您的自动加载器还应符合PSR-0 标准(由 PHP 标准工作组)

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

【讨论】:

    【解决方案2】:

    没有正确的方法,也没有教科书的标准。你的 PHP 项目中的文件夹结构由你来组织。不同的人有不同的约定。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

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

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

        【讨论】:

          【解决方案5】:

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

          require_once 'classFolder/SomeClass.php'
          

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

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

          希望这会有所帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-07-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-13
            • 2011-05-23
            • 2017-06-06
            相关资源
            最近更新 更多