使用变量存储参数数据是否正常?

时间:2013-12-29 01:28:23

标签: php variables

在PHP的一些示例中,我看到人们将事物分配给速记变量,然后使用简写变量。这是常见做法吗?这是好习惯吗?

$name = $_POST['name'];

然后他们使用他们在这里使用$ name来回显或使用它作为函数参数。

另一个例子是:

DEFINE('DB_USER', 'username');
mysqli_connect(DB_USER.......);

3 个答案:

答案 0 :(得分:3)

优点:

  • 速记变量可以更容易输入和记忆。
  • 简写变量可能允许进行一次昂贵的操作,而不是重复多次。但要注意过早优化!大多数情况下,这种优化还为时过早。
  • 可以使用速记变量制作可以在不修改原始变量的情况下进行更改的副本。
  • 在某些语言中,即使修改了原始变量,也可以使用速记变量制作一份保证持久的副本。

缺点:

  • 不加选择地使用速记变量可能会导致相同值的多个名称。
  • 在某些语言和情境中,速记变量会使用其他资源进行不必要的复制。

答案 1 :(得分:2)

我已经专业地做了大约5年的PHP。

通常在获取post变量时这是一个好主意,但更常见的是将它包装在isset三元if语句中:

$name = isset($_POST['name']) ? $_POST['name'] : false;

这样,如果未传递变量,则不会收到未定义的变量警告。

此外,它可以节省您每次都输入$ _POST,并且有助于更好地封装代码。

答案 2 :(得分:1)

编写代码时最重要的是编写可读代码,不仅适用于其他人,也适用于您自己。我们一直这样做,即抽象和应用编程方法 因此,预定义我们将使用的变量并设置默认值非常有意义。

我会做这样的事......

class ValueTooLong extends Exception {}

function R($param, $default=null, $type='string', $max_length=null) {
    if(!isset($_REQUEST[$param]))
        return $default;
    $r = $_REQUEST[$param];
    if($max_length && strlen($r) > $max_length)
        throw new ValueTooLong('Length of '.$param.' was '.strlen($r).'. Max length is: '.$max_length);
    if($type === 'bool' || $type === 'boolean') {
        if($r === 'false' || $r === 'no')
            return false;
        return !empty($r);
    }
    settype($r, $type);
    return $r;
}

# Which allows me do do this:
$name = R('name');
# or:
$count = R('count', 1, 'int');

编辑:函数现在采用max_length参数(如注释所示),如果请求参数的值太长则抛出异常