【发布时间】:2019-08-06 09:03:09
【问题描述】:
是否使用计算的包含/需要不良代码气味,是否对性能产生不良影响?而且我猜让包含的文件执行代码也是一件坏事,但是如果记录了这种行为可以吗?
背景信息/我提出问题的原因:
我需要调用 API 来获取有关某些服务的信息。我有大约 50 个服务,每个服务需要调用 API 0-6 次。所以我正在寻找一种配置方式
- API 调用的参数(参数类型因调用而异,可以是字符串也可以是数组)
- 定义要调用的 API
我想为每个包含调用的服务创建一个文件,并将信息作为单个数组返回,如下所示:
<?php
// Params for Call 1
$anArrayWithSomeParams = array('param1', 'param2', 'param3', 'param4');
// Params for Call 2
$aString = 'string1';
$anotherString = 'string2'
// Params for Call 3-6
...
$someInformation = $dmy->getSomeInformation($anArrayWithSomeParams);
$notNeededHere = NULL;
$moreInformation = $dmy->getMoreInformation($aString,$anotherString);
...
$allData = array( '0' => $someInformation,
'1' => $notNeededHere
'2' => $tablespace,
....
);
?>
然后我可以包含该文件并使用变量alldata 来访问数据并对其执行如下操作:
require_once('class.dummy.php');
$directories = array("dir1", "dir2", "dir3");
$dmy = new dummy();
foreach($directories as $path) {
$allData = NULL;
$executeDataCollection = $path.'myFile.php';
require($executeDataCollection);
print "<pre>";
print_r($allData);
print "</pre>";
}
虽然这可能可行,但它似乎不是一个优雅的解决方案。我想知道是否有人可以提示我以更优雅/更复杂的方式处理此问题。
提前致谢!
【问题讨论】:
-
使用
require被认为是不好的做法。您应该使用自动装载机。但是,话虽如此,使用动态类名(这是您通过自动加载执行此操作的方式)也是不好的做法。通常在 OOP 中所做的是一个接口、多个实现它的类以及一个在需要时创建适当实例的工厂。 -
嗨 Max,欢迎来到 StackOverflow。你刚刚问了一个很好的问题。但是,我认为这主要是基于意见的。或许你可以看看codereview.stackexchange.com
标签: php configuration