批量PHP isset生成器


bulk PHP isset generator

我刚刚加入了一个用纯php开发的项目(在没有框架的情况下)。我有一个有213个字段的表,根据指南,我必须做一个isset,准备字符串,为212个字段准备数字。

这是大量重复的代码,并且这个系统中的大多数表都是巨大的。因此,我想通过开发isset生成器来节省时间,但在我重新发明轮子之前,我想问:有人能告诉我这样一个返回isset代码的生成器的方向吗?类似于http://www.fpmgonline.com/mysql_insert.php


已编辑以添加代码

假设$data是我的$_POST数组,而不是逐个检查许多字段,我想生成一个批量isset代码

这是一些样本代码

<?php
$data = Array('name' => 'Sample name', 'desc' => 'Sample description');
if (isset($data['name'])) {
    $name = trim($data['name']);
} else {
    $return[] = ' Name code is required';
}
if (isset($data['desc'])) {
    $desc = trim($data['desc']);
} else {
    $return[] = ' Description is name is required';
}
if (isset($data['age'])) {
    $age = trim($data['age']);
} else {
    $age = 0;
}
?>

谢谢。

不需要"生成"代码。这就是为什么在编程语言中有数据结构、循环和条件。

$data = Array('name' => 'Sample name', 'desc' => 'Sample description', 'age' => 'Foo bar');
$defaults = Array('age' => 0);
$messages = Array('name' => ' Name code is required', 'desc' => ' Description is name is required');
for($data as $key => $val) {
    if (isset($data[$key])) {
        $$key = trim($data[$key]);
    } else if (isset($defaults[$key])) {
        $$key = $defaults[$key];
    } else {
        $return[] = $messages[$key];
    }
}

这里需要使用变量($$key)也是完全错误的。使用"动态"数据时,不需要为每个项使用单独的变量。我会把它重构成这样:

$clean_data = Array();
for($data as $key => $val) {
    if (isset($data[$key])) {
        $clean_data[$key] = trim($data[$key]);
    } else if (isset($defaults[$key])) {
        $clean_data[$key] = $defaults[$key];
    } else {
        $return[] = $messages[$key];
    }
}

此外,$data不应该是来自$_POST的任何内容。它应该是字段列表中的所有内容,然后检查它是否存在于$_POST中,这样就不会运行基于用户输入的任意代码。

我为isset做了一个简单的:

$data = Array('name' => 'Sample name', 'desc' => 'Sample description');
bulkisset($data, 'name,description,age');
function bulkisset($data, $table_fields) {
    $code = '';
    $inputs = explode(',', $table_fields);
    foreach ($inputs as $key) {
        $code .= '<br/>if (isset($data["' . $key . '"])){'
                . '$name = trim($data["' . $key . '"]);} else {$' . $key . ' ="";};';
    }
    echo $code;
}

这可能不是检查数据的最佳方式,但我觉得这会节省一些时间。