1

每当我在 php 中设计我的应用程序时,我遇到的这个问题确实让我头疼:我不知道我是否应该为每个函数创建单独的文件(例如:用于验证特定表单的函数)。

好的,有人可能会争辩说这没有意义,因为我必须单独包含每个文件,这可能会导致应用程序更慢?

但我仍然认为这确实有意义,因为对于一个页面加载,我怀疑脚本是否会使用其他函数,所以它们必须毫无意义地加载?此外,如果我设计的系统为我动态地执行此操作(解析 url vars 等),我不必手动包含每个函数文件,也就是说,在需要时准确地加载函数(文件)。你怎么看?

4

4 回答 4

2

你在用OO吗?如果是这样,那么您绝对应该为每个文件保留一个类,并智能地命名文件......

class Page {
      ...
}

应该可以在类似或类似的地方classes/Page.php找到includes/Page.class.php

如果你只有一堆全局函数,你应该将它们分组到文件中,例如includes/functions/general.php.

详细地说,您的functions文件夹可能有...

  • array.php
  • string.php
  • form_validation.php
  • request.php
  • general.php
  • html.php

如果您要像这样组织文件,更好的主意是使用一个类并将函数设为静态,例如string::isAlphaNum($str). 这是一个更好的主意,因为它只向您的全局命名空间引入了一个新术语,而不是不必要的一堆。

如果您使用的是 PHP 5.3,您还可以查看名称空间。

于 2010-11-03T00:41:57.347 回答
1

文件包含的开销很小,考虑到缓存和其他事情,您不必真正担心它。更多的是关于如何让自己保持井井有条并快速找到你的东西。

老实说,我很少使用函数,我使用类。规则通常是每个文件都有一个类。但我也有一个包含所有全局函数的工具箱文件。

于 2010-11-03T00:44:21.840 回答
1

您只需确保已安装APCxCacheeAccelerator。它们都为编译的 PHP 字节码提供缓存。

这意味着一旦包含文件,它将存储在内存中并准备好由功能请求使用。将不需要包含文件。

于 2010-11-03T00:54:02.690 回答
0

几乎可以肯定的是,通过增加对(许多)多个文件的磁盘 I/O 读取,您将看到比具有许多功能的较小文件集更显着的性能损失。

对于自动文件包含,将函数包装到合适的类中并使用spl_autoload让 PHP 处理包含过程。

于 2010-11-03T00:42:26.797 回答