【问题标题】:Strategy for including and organizing files in PHP scripts [closed]在 PHP 脚本中包含和组织文件的策略 [关闭]
【发布时间】:2013-05-23 01:52:05
【问题描述】:

我是 Stack Overflow 和 PHP 编程的新手,我对使用 PHP 的 require()require_once() 函数在我的脚本中包含文件有疑问。

我正在使用 PHP 构建一个开源 Web 应用程序,并且正在努力研究如何使用包含的文件。我想将程序的核心功能与每个页面的实际代码和每个页面的HTML分开,目前有几个包含文件,一个用于数据库相关的函数和变量,一个用于一般站点/程序设置,另一个用于其他功能。目前,所有这些文件都由一个名为 bootstrap.php 的文件引用,其内容可以在 https://code.google.com/p/audioshout/source/browse/inc/bootstrap.php 找到。

但是,有几个人告诉我,这个策略不是一个好策略,但实际上他们都没有给我一个更好的策略来使用。作为我当前策略的结果,与特定功能相关的警告会在站点的每个页面上生成,即使该特定功能仅在几个页面上需要。但是因为它包含在 bootstrap.php 包含的文件中,而 bootstrap.php 又包含在站点的每个页面中,所以在每次访问页面时都会调用该函数,因此会引发警告。

清理包含策略的最佳方法是什么,或者在 PHP 项目中包含文件的最佳策略是什么?此外,在使用包含和为项目创建设置时,常量如何发挥作用?现在所有设置,即使是用户可配置的设置,都存储在变量而不是常量中,但我看到像 WordPress 这样的其他项目使用常量而不是变量,尤其是在涉及包含文件的路径等时。

感谢您提供的任何答案!要查看该项目的更多源代码,请访问http://code.google.com/p/audioshout/

【问题讨论】:

    标签: php open-source include constants


    【解决方案1】:

    您应该在每个文件一个类中编写您的 php,并遵循 psr-0 命名。这是一篇好文章。 http://net.tutsplus.com/tutorials/php/psr-huh/

    您可能认为制作所有的类和文件会导致大量的 require 语句。但这就是自动加载的用武之地。如果您按照教程进行操作,您将永远不必编写另一个 require 语句。

    【讨论】:

      【解决方案2】:

      一般来说,在 require_once 上使用 require 并没有什么用处。后者可以保护您免受有关重新定义函数等的错误或警告。这可能有一个例外,但在我个人的经验中从来没有出现过,已经有十年左右的时间了。 (还有人记得 PHP 曾经代表“个人主页”吗?:))

      对于常量与变量,PHP 是一种非常松散(弱类型)的语言。您可以将字符串与数字进行比较,这在强类型语言中永远无法使用。您还可以看到,通过注意函数名称有时带有下划线,有时不带下划线,有时字符串函数的第一个参数将是输入,有时它将是最后一个。

      关键是,它是一个非常强大的工具,但它从未打算成为它的样子,因此有时会让人困惑,以找出“正确”的做事方式。它是来自这么多人的层层贡献。所以你可以尝试尽可能完美地做事情,但在那些情况下,真的,这不会有任何区别。变量在所有情况下都很好。如果您知道它在执行期间永远不会改变,那么您可以将其定义为常量,但这确实更适用于 JAVA 等语言。

      如果您是 PHP 新手,但知道其他语言,只需应用相同的方法 - 尝试将可重用代码保存在一个地方。你会很快学会它,PHP 是我所知道的所有语言中最容易掌握的。祝你好运,学习新的编程技能总是一个有趣的冒险——或者我只是一个书呆子:)

      【讨论】:

        【解决方案3】:

        还可以查看autoloading 您的课程。如果您为每个类正确命名空间并使用文件系统结构镜像命名空间结构,您几乎不必使用任何 include 或 require 语句!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-04-03
          • 1970-01-01
          • 2011-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-04
          • 1970-01-01
          相关资源
          最近更新 更多