【问题标题】:is it wise to make every class loaded automatically [closed]自动加载每个类是否明智[关闭]
【发布时间】:2012-06-23 04:00:27
【问题描述】:

我正在编写 MVC,我需要一个建议,使用 spl_autoload_register 自动加载每个类(包括控制器、模型、核心类)是否明智,否则可能会出现问题或性能下降。

【问题讨论】:

    标签: php model-view-controller oop


    【解决方案1】:

    这可能取决于许多因素,但我使用了自动加载每个类的框架(从一个相对较大的 autload 函数,该函数看起来很宽泛)以及嵌套包含的很多。我从来没有注意到像这样的自动加载的性能问题。它使事情变得非常简单,因为您不必担心包含冲突。

    不过,正如我所说,这可能取决于。您可以通过基准测试来测试哪种方法更快。如果您在实现方面有一个较慢的首选方法,您将不得不决定速度差异是否足以使用较差但更快的实现。

    【讨论】:

      【解决方案2】:

      在大多数情况下 - 是的。如您所料,手动加载类会提高性能,但仅在您拥有一个由大量文件组成的库(例如 PHPExcel)的情况下会提高一点性能,但即使在这种情况下,使用它也更可取自动加载。

      总的来说:在大多数情况下(尤其是对于传统网站),手动加载是微优化。

      处理此功能的最佳方法 - 如果性能似乎出现问题,请启动基准测试。基准测试是最好的方法,因为一切都取决于架构框架

      【讨论】:

      • 感谢您的真正有用的回答
      • 我不想说你错了,但许多开发人员报告说,花时间从手动加载切换到自动加载提供了可衡量的性能提升。您可以获得不必使用 *_once 并且不包括您不需要的内容的优势。
      • 自动加载会为你做到这一点,它不会加载你不需要的东西,所以这很酷
      • 自动加载将在当前全局范围内加载新代码,并且必须解析它并比较它与现有定义的类/函数/常量的冲突。在脚本执行过程中在运行时执行此操作可能会导致致命错误(而 require_once 会阻止脚本运行),并且由于此类检查不会一次完成,自动加载会降低性能。
      猜你喜欢
      • 1970-01-01
      • 2010-12-01
      • 2014-04-19
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      相关资源
      最近更新 更多