gpt4 book ai didi

php - 我如何减少带有大量 isset 检查和重复但可变的生成参数的 PHP 代码?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:39:56 24 4
gpt4 key购买 nike

问候。我正在努力减少看起来相当冗长的代码段,让我不相信它的必要性。它是一个生成大量用于填写表单的 session 数组的函数,它让我验证参数数组中某些值的存在,以及每个生成请求数组的情况。开始了:

function prepOptional($formData) {

$baseInfo=getBaseInfo();

$_SESSION['fooData'] = (isset($formData['cbFoo']) ? prepBaseForm($baseInfo, 'foo',
'Option foo') : '');

$_SESSION['opt1Data'] = (isset($formData['cbOpt1']) ? prepBaseForm($baseInfo, 'opt1',
'Option 1') : '');

$_SESSION['barData'] = (isset($formData['cbBar']) ? prepBaseForm(prepOtherArray($formData), 'bar',
'Option bar', 'Optional argument') : '');

}

该函数接受一个表单数据数组作为参数,并根据包含的值在 session 中生成相应的数组;这仅在检查匹配标志存在后才会发生,因此检查 issets 和三元运算符。

被调用的函数 prepBaseForm 将第二个和第三个参数(对应于文件名和友好名称)与第一个参数(数组)的附加分开;它还接受可选的第四个参数,指示要连接到填充表单的文件。

如果该值不存在于数组中,代码有意将相应的 session 变量清除为 '' 以保持生成顺序不变(为此:是否有更好的方法,考虑到有给定生成顺序将被打破的场景?)。

实际代码有大约二十个这种格式的生成 block ,并且变得相当冗长;我想到的一个优化是遍历给定的字段并概括生成过程,但正如您所看到的,很多时候参数不同,或者 prepBaseForm 函数的输入数组必须以另一种方式生成。关于如何解决此重构的任何想法?预先感谢您的回复。

最佳答案

一个选项是提供默认值,如果使用普通条件更改值,则只运行它。然后您可以通过将所有内容放入一个简单的循环中来进一步清理。:

function prepOptional($formData) {
$baseInfo=getBaseInfo();

$options = array(
'foo' => 'Option foo',
'opt1' => 'Option Opt1',
'bar' => 'Option Bar',
);
foreach ($options as $name => $text) {
//Add defaults for formData and Session arrays)
$formData += array('cb' . ucfirst($name) => '');
$_SESSION += array($name . 'Data' => '');

if ($formData['cb' . ucfirst($name)]) {
$_SESSION[$name . 'Data'] = prepBaseForm(
$baseInfo,
$name,
$text
);
}
}
}

关于php - 我如何减少带有大量 isset 检查和重复但可变的生成参数的 PHP 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4969589/

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