gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 23:34:52 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com