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

4
良好的设计原则要求只编写每个函数一次。在PHP中,我通过使用包含文件(例如Utils.php和Authenticate.php)以及PHP命令include_once来实现这一点。然而,我没有找到任何关于PHP包含文件的标准或最佳实践。StackOverflow会建议什么?
我正在寻找以下内容:
- 命名标准 - 代码规范 - 设计模式 - 定义常见函数的返回类型的建议(现在我只是使用关联数组)。
4个回答

7

我喜欢使用的一种约定是将每个类放在自己的文件中,文件名为ClassName.class.php,然后设置自动加载器来包含类文件。或者有时我会把它们都放在一个classes/子目录中,只需命名为ClassName.php。这取决于我期望的类与非类包含数量。

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

至于返回类型,我尝试遵循内置函数中使用的约定。返回适合请求的类型,或在失败时返回false。只要确保在结果中检查false时使用=== 运算符

你关注规范性这一点表明你已经在正确的轨道上了。如果你熟悉其他面向对象编程语言,如Java、C++、C#等,那么由于PHP5中的面向对象编程优点,你会发现可以遵循许多相同的约定。


3
无论您最终采用什么命名约定(我更喜欢尽可能从Java或C#中获取提示),请确保如果您使用包含文件来进行函数调用,则这些文件在包含时不会实际执行任何代码,并且永远不要重复包含相同的文件。(使用include-oncerequire-once

2

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

以下是Zend编写的一个标准,也是Zend框架使用的标准。 http://framework.zend.com/manual/en/coding-standard.html

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

但是,我更倾向于对于您自己的项目,您应该使用您感到舒适的内容,并保持内部一致性。对于其他项目,请遵循它们的规则。一致性可以实现最大程度的代码可读性。我的标准与PEAR的标准不同。我不使用四个空格缩进(我使用制表符),并且从不使用驼峰式函数名称,但是如果我正在编辑来自另一个项目的内容,我将遵循该项目的任何规则。


0
我已经完成了以下工作。首先,我创建了一个拦截过滤器,用于拦截所有的网络请求,我还创建了一个可以与命令行命令配合使用的版本。
两个拦截器都会进入一个引导文件,该文件将设置一个自动加载器。这个文件包含自动加载函数和一个哈希表。对于哈希表,键是类名,值是类文件的路径。自动加载函数只需取得类名并在文件上运行`require`。
如果需要一些性能提示,建议在定义文件时使用单引号,因为它们稍微快一些,因为不需要解析;此外,使用`require/include`而不是其`_once`版本,保证只运行一次,前者更快一些。
以上内容很好,事实上,即使有大量类的大型代码库,哈希表也不会太大,并且性能从未成为问题。更重要的是,我们不会局限于某种疯狂的伪命名空间类命名约定,请参见下文。
另一个选项是使用分隔符名称,伪命名空间技巧。这种方法不太吸引人,因为命名空间将在5.3中出现,我认为在整个代码库中重命名这些命名空间会比较麻烦。无论如何,它的工作原理是这样的:假设您的所有代码都有一个根目录。然后,所有类都基于需要遍历的目录命名,由字符(例如'_')分隔,然后是类名本身,文件将以类命名。这样,类的位置就编码在名称中,自动加载程序可以使用它。除了really_long_crazy_class_names_MyClass之类的类名过长外,这种方法的问题在于每次调用都需要进行相当多的处理,但这可能是过早的优化,而且命名空间即将到来。
例如:
/code root
ClassA ClassA.php
  /subfolder
  subFolder_ClassB ClassB.php

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接