类定义的顺序在PHP中是否重要?

时间:2010-08-11 13:27:50

标签: php

如果我在不同的php文件中有几个类,我将其包含在一个文件中,并且其中一些类依赖于其他类,那么它们的包含顺序是否重要?或者,只是在它们被使用之前简单地包括它们(以任何顺序)?

6 个答案:

答案 0 :(得分:12)

是的,这很重要。

我建议使用autoloading来解决班级依赖问题。这样,只有在实际需要时才加载类,并且您不必费心手动包含每个PHP文件。

但是,您必须将每个类保留在自己的文件中才能使其正常工作。但无论如何,这是保持一切整洁干净的好方法。

答案 1 :(得分:2)

在1个PHP文件中,您可以在任何地方声明函数/类并在任何地方(在该文件中)调用它们,顺序无关紧要。

对于includes,您必须在尝试在该文件中使用声明的函数/类之前包含该文件。

答案 2 :(得分:0)

只需在他们需要之前加入它们,一切都会好起来的。

答案 3 :(得分:0)

如果一个类试图使用另一个尚未解析的类,那么就会发生错误。最好的选择是将类放在脚本中,这样依赖性仍然是完整的。

答案 4 :(得分:-1)

如果它们都在同一个文件中,那么订单就不重要了。有一些罕见的实例(我已经看过命名空间),顺序确实很重要,但除非你推动信封,否则不要太担心。

试试吧。最糟糕的情况是,它会给你一个错误......

答案 5 :(得分:-1)

是的,这很重要,当涉及大量课程时,它可能会导致问题。当您的生产脚本需要包含40或50个类时,使用自动加载是不可行的,如果您的应用程序是按照最佳OOP实践正确设计的,并且您需要处理表单等,则总是如此...

让我解释为什么订单很重要。如果您使用自动加载器,则每次找到关键字extends时,都会尝试自动加载类。因此,如果在定义扩展类之前进行扩展,则会触发自动加载事件。

开发应用程序时,请使用自定义自动加载器。使该自定义自动加载器为您提供有关使用的时序和内存的信息。它将逐个加载所有类文件,并浪费大量时间。完成应用程序后,可以通过将许多相关类集中到一个文件中进行优化。例如,我的表单类在class.form.php中,它不只是加载表单类。它加载另外50个与表单相关的类。所以我在一个文件中包含所有内容,当我创建一个新表单()时,自动加载器会加载class.form.php,其中包含表单通常需要的其他类(form_checkbox,form_input等),所以当需要它们时,不是自动加载器,因为它们已经定义。

您可以创建一个PHP脚本,该脚本将递归,解析依赖关系并在单个类文件中对所有类进行排序(使用我的示例为class.form.php),以便它们都具有在extends关键字之前定义的父类(找到了触发器自动加​​载。我在连接文件上运行php -w,它会删除注释和空格。它将我的表格类别从80K减少到18K。每当我使用表单时,我创建一个新的表单(),它加载了价值18Ks的表单相关类,这并不过分。

最初我使用linux命令cat但它不起作用。您需要一个更智能的脚本来解析每个扩展类的父级,并正确地对包含许多相关类的文件中的类进行排序。