Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中,在另一个类的方法中有条件地包含带有的类文件有哪些优点和缺点?_Php_Require Once - Fatal编程技术网

在PHP中,在另一个类的方法中有条件地包含带有的类文件有哪些优点和缺点?

在PHP中,在另一个类的方法中有条件地包含带有的类文件有哪些优点和缺点?,php,require-once,Php,Require Once,对于需要所有类的解释器,在将所有类都包含在一个目录中时,有人建议,处理该问题的更好方法是有条件地只包含解释器迭代所需的命令文件。例如,与此相反: require_once('CommandA.php'); require_once('CommandB.php'); require_once('CommandC.php'); class Interpreter { public function interpret($action) { switch($action)

对于需要所有类的解释器,在将所有类都包含在一个目录中时,有人建议,处理该问题的更好方法是有条件地只包含解释器迭代所需的命令文件。例如,与此相反:

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-style


在对我上一个问题的回答中,有条件加载的优点包括速度、占用空间和易于编写。在其他问题中,我发现c风格的加载更具可读性和可维护性。有人能详细说明一下吗?还有其他的优点或缺点吗?

条件加载的主要优点是,每次加载该类时,它不会包含整个php文件树。事件当您使用代码缓存时(您应该这样做),每当vm遇到/(include | require)(once)/,都会检查文件的更新,因此包含不必要的php文件会降低代码的速度

这种特殊方法的缺点是,更难维护,更容易出错。把一件事写两遍是一种代码味道。Wirting My_类意味着您需要这个类,而编写include“My_Class.php”也意味着这一点。这是不对的


我建议使用自动加载:

另一种选择是使用自动加载程序,这意味着您不需要在类代码中嵌入requires,也不需要在脚本顶部嵌入所有可能的类@Gordon的可能副本我认为这两个问题的范围不同,尽管相似。我问的不仅仅是性能。我想要一般的优点和缺点。包括可读性和可写性、任何范围问题、意外行为等。@Mark我肯定会研究自动加载程序。将includes放在前端时,可读性和可维护性明显更好,但再次强调,自动加载将完全消除这一顾虑。在IMO中,只要文件只包含类或函数定义(这些定义将始终导入全局范围),那么唯一适用的注意事项就是性能。但那只是我的想法。