包含文件和使用 SPL 自动加载机之间的最大区别是什么


What is the big difference between including files and using SPL Autoloader.

我正在尝试开始使用SPL自动加载器,但我似乎还不能理解它的重要性。

假设我有一个目录"类",其中包含子目录和 php 文件作为类,如下所示。

'classes/feed/feed.php';
'classes/compose/file_upload.php';
'classes/compose/char_limit.php';
'classes/feed/postrank/postrank.php';
'classes/notifications/push.php';

然后我在"类"目录中创建一个名为 autoloader 的 PHP 文件.php其中包含如下内容

<?php 
    include_once 'feed/feed.php';
    include_once 'compose/file_upload.php';
    include_once 'compose/char_limit.php';
    include_once 'feed/postrank/postrank.php';
    include_once 'notifications/push.php';
    ?>

然后在我希望这些类的每个页面上,我只包含自动加载器.php文件以包含项目的所有类。

1. 随着项目的发展,我将面临哪些问题?

2. 如果我开始使用 SPL 自动加载机,我将如何使用我当前的目录结构进行设置?

3. 与SPL自动加载相比,使用包含/要求之间的加载时间是否有差异?

4. 所有的类都应该在一个目录"类"下吗?或者我的文件结构没有问题?

1. 随着项目的发展,我将面临哪些问题?

您必须在自动加载机中包含越来越多的文件.php。另外,你必须将它包含在你的每个新文件中。更多文件读取。性能较差。

2. 如果我开始使用 SPL 自动加载机,我将如何使用我当前的目录结构进行设置?

目录结构无关紧要(假设你的类树排列得很好,逻辑合理(。重要的是您在类中指定的命名空间。例如,如果您希望 SPL 自动加载包含 class/feed/postrank/postrank.php 文件中的类(大概是 postrank 类声明(,则该文件必须包含命名空间声明,例如:

namespace classes'feed'postrank;
class postrank {
    ...
}

这样,SPL 将知道如何在应用程序的文件系统中找到类的声明。

3. 与SPL自动加载相比,使用包含/要求之间的加载时间是否有差异?

如果你在自动加载器中包含所有内容.php,你就会强制PHP读取并包含其中的每一个文件。SPL 仅加载您需要的类,并且仅在需要时加载它们。如果您有相当数量的文件和类(例如数百个(,则时差可能会很明显,具体取决于您的应用程序服务器性能。

4. 所有的类都应该在一个目录"类"下吗?或者我的文件结构没有问题?

实际上取决于您的应用程序结构,因此这完全是您的决定。

相关文章: