- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
问候。我正在努力减少看起来相当冗长的代码段,让我不相信它的必要性。它是一个生成大量用于填写表单的 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/
我有以下不能正常工作的 $_GET['category'] 也可以等于 0。 if ( empty( $_GET['category'] ) ){ // do something } else
我最近被安排做一个需要一些PHP的项目,我对PHP了解不多。站点中有几个实例,单击按钮后,用户会被重定向到带有一些 URL 参数的另一个页面。然后下一页使用 $_GET 获取这些参数并继续。 代码中的
如果我使用此代码将数字作为输入,它可以正常工作 Hours: Hours: Minutes: Hours: Minutes
我希望扩展我的 PHP 知识,但我遇到了一些我不确定它是什么或什至不知道如何搜索它的东西。我正在查看 php.net isset 代码,我看到了 isset($_GET['something']) ?
isset($var) == "Test" 和 isset($var) && $var == 'Test" 有什么区别? 最佳答案 这里是一个简短的例子: $var = "Chuck Test"; v
isset($var) == "Test" 和 isset($var) && $var == 'Test" 有什么区别? 最佳答案 这里是一个简短的例子: $var = "Chuck Test"; v
例如,如果我实现一些简单的对象缓存,哪种方法更快? 1. return isset($cache[$cls]) ? $cache[$cls] : $cache[$cls] = new $cls; 2.
{if isset({$LANG.domainmoreinfo}){$LANG.domainmoreinfo}{/if} 这似乎是一个不正确的语法,有人能告诉我我做错了什么吗? 也许我们不能在“$LA
这个问题在这里已经有了答案: Weak typing in PHP: why use isset at all? (9 个回答) 关闭 6 年前。 我是 PHP 的初学者,想知道这之间有什么区别 $
根据文档 isset 条款“测试此项目中是否已设置给定属性”。我不明白设置属性时 isset 返回 true 还是 false 在下面的代码片段中,当 env.JAVA_HOME 未设置时,java.
这个问题在这里已经有了答案: Search nested object for property (4 个答案) 关闭 2 年前。 我找不到与我的问题非常相似的问题,但如果你能找到一个,请随时告诉我
有人可以帮助我学习 PHP 吗?我想创建简单的表单,并在添加“isset 函数”后返回所有表单。 Monitors Graphics Peripher
当我打印它时,我有 $list 然后我得到以下输出 AWeberEntry Object ( [_privateData:protected] => Array ( [0] =
知道 PHP 的 memcached 模块是否支持某种 isset() 方法吗? 以下案例: Memcached::set('foo', false); if(Memcached::get('foo'
我正在阅读“Head First PHP & MySQL”一书,书中的许多部分都有用于处理 HTML 表单的代码片段。他们是这样开始的: if (isset($_POST['submit'])){ .
有没有一种快捷方式可以将$_GET['values']赋值给变量? 我现在和其他人一样: if(isset($_GET['type'],$_GET['case']) $type = $_GET[
知道 PHP 的 memcached 模块是否支持某种 isset() 方法吗? 以下案例: Memcached::set('foo', false); if(Memcached::get('foo'
我有一个表格 > Note Add More Notes Next call date
这是我的Python代码: if onerow[0]['result'] is None or not result['GetOdds'][0]['result']is None: 当result为空
我创建了一个 isset 函数来检查变量是否已定义且不为空。这是我的代码: isset = function(a) { if ((typeof (a) === 'undefined') ||
我是一名优秀的程序员,十分优秀!