PHP函数包含文件的设计技巧

时间:2009-03-02 14:47:42

标签: php include server-side-includes

好的设计要求只编写一次函数。在PHP中我是通过使用包含文件(如Utils.php和Authenticate.php)和PHP命令include_once来实现的。但是,我无法找到PHP包含文件的任何标准或最佳实践。你对StackOverflow的建议是什么?

我正在寻找:

  • 命名标准
  • 代码标准
  • 设计模式
  • 定义常用函数的返回类型的建议 (现在我只是使用关联数组)。

4 个答案:

答案 0 :(得分:7)

我喜欢使用的一个约定是将每个类放在名为ClassName.class.php的文件中,然后设置autoloader以包含类文件。或者有时我会将它们全部放在classes /子目录中,并将它们命名为ClassName.php。取决于我期待的课程与非课程的数量。

如果您将实用程序功能组织到类中并使它们成为静态方法,那么您可以在顶级文件中只编写一个require_once()。这种方法可能适用于您的代码或编码风格,也可能不适用。

对于返回类型,我尝试遵循内置函数中使用的约定。返回适合请求的类型,或者在失败时返回false。在结果中检查错误时,请确保使用=== operator

您关注惯例这一事实表明您已经走上正轨。如果您熟悉任何其他OOP语言,如Java,C ++,C#等,那么您会发现,由于OOP goodness in PHP5,您可以遵循许多相同的约定。

答案 1 :(得分:3)

无论你最终使用什么命名约定(我更愿意尽可能从Java或C#中获取提示),请确保你是否使用包含文件来实现他们实际上不执行任何代码的函数,并且永远不要包含相同的文件两次。 (使用include-oncerequire-once

答案 2 :(得分:2)

已经写了一些这样的标准。大多数大型项目都遵循自己的标准。

这是由Zend编写的,是Zend框架中使用的标准。 http://framework.zend.com/manual/en/coding-standard.html

此外,PEAR总是有一些相当严格的编码标准: http://pear.php.net/manual/en/standards.php

我的首选答案是,对于您自己的项目,您应该使用您感觉舒适的内容,并且内部保持一致。对于其他项目,请遵循他们的规则。一致性允许最大的代码可读性。我自己的标准与PEAR标准不同。我没有缩进四个空格(我使用标签),我从不使用像函数名称这样的驼峰案例,但是如果我正在编辑其他项目中的内容,我会选择该项目的任何内容。

答案 3 :(得分:0)

我做了以下事情。首先,我创建了一个拦截过滤器,拦截所有Web请求,我还创建了一个可以使用命令行命令的版本。

两个拦截器都会进入启动带文件,这将设置自动加载器。此文件作为自动加载功能和哈希。对于散列,键是类名,值是类文件的文件路径。自动加载功能只需获取类名并在文件上运行require。

如果你需要它们的几个性能提示,在定义文件时使用单引号,因为它们稍微快一点,因为它们没有被解释,也使用require / include,而不是它们的_once版本,这保证运行曾经,前者更快一点。

事实上,上面的内容非常棒,即使拥有大量类的大型代码库,哈希也不是那么大,性能从未成为关注的问题。更重要的是,我们没有结合一些疯狂的伪名称空间类命名约定,见下文。

另一个选项是分隔名称,伪名称空间技巧。这不太有吸引力,因为名称空间将带有5.3并且我认为这很粗略,因为在代码库中重命名这些将不那么有趣。无论如何,这是它的工作原理,为你的所有代码假设一个根。然后,所有类都是根据到达目的地所需的目录遍历命名的,由一个字符(如“_”)分隔,然后是类名本身,该文件将在该类之后命名。这样,类的位置就是名称中的编码,自动加载器可以使用它。除了really_long_crazy_class_names_MyClass之外,这个方法的问题在于每次调用都有相当多的处理,但这可能是过早的优化,并且名称空间也会来临。

例如

/code root
ClassA ClassA.php
  /subfolder
  subFolder_ClassB ClassB.php