如何合并/消除类文件的 PHP 包含

问题描述 投票:0回答:3

我有多个文件,我单独保存。我想将它们全部放在一个文件中以减少文件 I/O,并且只包含一个文件。

更新

最终使用了自动加载器,这里是 php.net reference。现在我不必显式包含每个文件,并且根据参考文件是延迟加载的。

php class optimization hierarchy
3个回答
3
投票

PHP 将解析该文件。 PHP 可能会注册这些类,并且在任何情况下都会解析和语法检查该文件。但这可能仍然比加载单独的文件更快。更多单独的文件 I/O 会更慢,但它需要的内存更少,因为只加载所需的文件。

我也不担心,因为仅课程的内存消耗就接近于零。文件 I/O 可能也不会成为问题。您可能有 APC 缓存,它将 PHP 文件的编译版本保存到内存中,如果没有,您的操作系统可能会有一些缓存功能,导致经常使用的文件加载速度更快。


3
投票

虽然没有什么可以阻止您将所有类对象合并到一个文件中,但这样做会违反基本的代码设计理念,并且最终会创建一个整体文件来管理。

如果您正在考虑为 require() 创建一个类,我建议将您的各个类保留为自己的文件,并使您的 consolidate.php 看起来更像这样:

<?php
    /** consolidate.php **/
    require "class.session.php";
    require "class.general.php";
?>

对于 PHP 处理,在文件上调用 require() 或 include() 实际上不会调用对象上的任何构造方法。也就是说,它确实包含整个文件。例如,包括session.php (2KB) 和general.php (3KB) 将仅包括5KB。根据您的代码库,包含所有内容可能会大大增加该大小。


2
投票

如果您正在开发所有类,您绝对不应该将它们放在一个文件中。这使得事情变得非常难以维护。每个类都有一个单独的文件,这意味着您确切地知道在哪里进行更改。是的,PHP 花时间解析你不使用的类。你为什么不想使用自动加载器?它们让事情变得更加容易,而且并不是很多开销或其他什么。

如果你担心 IO 效率,那么缓存你的代码。

解决命名约定,我建议您在这里查看一个相当广泛接受的标准:

http://groups.google.com/group/php-standards/web/psr-0-final-proposal?pli=1

© www.soinside.com 2019 - 2024. All rights reserved.