php - 在 PHP 的另一个类的方法中有条件地包含一个类文件的优点和缺点是什么?

标签 php require-once

this question关于将所有类包含在需要所有类的解释器的目录中,建议处理该问题的更好方法是有条件地仅包含解释器的此迭代所需的命令文件。例如,而不是这个:

require_once('CommandA.php');
require_once('CommandB.php');
require_once('CommandC.php');

class Interpreter {

    public function interpret($action) {
        switch($action) {
            case 'A':
                $c = new A();
                $c->execute();
                break;
        }
    }
}

做更多像这样的事情:

class Interpreter {

    public function interpret($action) {
        switch($action) {
            case 'A':
                require_once('CommandA.php');
                $c = new A();
                $c->execute();
                break;
        }
    }
}

使用第二种选择的优点和缺点是什么——动态和有条件地仅加载所需的命令——与第一种选择相反——包括文件头部的所有文件,C 风格?

在对我之前问题的回答中,速度、占用空间和易于编写被列为条件加载的优势。在解决这个问题的其他问题中,我看到它表明 c 风格的加载更具可读性和可维护性。任何人都可以详细说明这些吗?还有其他优点或缺点吗?

最佳答案

条件加载的主要优点是它不会在您每次加载该类时包含一整棵 php 文件。当您使用代码缓存时(您应该这样做),每次 vm 遇到/(include|require)(once)?/时都会检查文件是否有更新,因此包括不必要的 php 文件放慢你的代码。

这种特殊方法的缺点是,它更难维护,也更容易出错。把一个东西写两次是一种代码味道。 Wirting My_Class 意味着,你需要这个类,写 include "My_Class.php"也意味着这个。这是不对的。

我建议使用自动加载:http://php.net/manual/en/language.oop5.autoload.php

关于php - 在 PHP 的另一个类的方法中有条件地包含一个类文件的优点和缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3758355/

相关文章:

php - 需要一次停止脚本

php - 是否有 require_once 的 HTML 变体?

PHP/HTML/CSS : IE acting weird when using require_once()

php - require、include、require_once 和 include_once 之间的区别?

php - 查询php序列化字符串blob

php - 获取opencart主页上的产品类别

php - 使用 Javascript 和 PHP 的设计模式

php - mysql。以月为单位的日期差异

javascript - 将 ajax 响应设置为变量以使其成为对象

PHP Doctrine 初学者 : Doctrine\ORM\Tools\Setup not found