2

是否有原则建议不要做以下事情:

mysql_real_escape_string(trim(str_replace($var, "black", "<body text='%body%'>")));

如果这样的事情应该是禁止的,那么这可以接受吗?

$var = trim($var);
$var = str_replace($var, "black", "<body text='%body%'>");
$var = mysql_real_escape_string($var);

或者这也是一种不好的做法,就像我在上面所做的那样,在一个类似的地方调用和执行同一个变量?这样做会更好:

$var1 = trim($var);
$var2 = str_replace($var1, "black", "<body text='%body%'>");
$var3 = mysql_real_escape_string($var2);

我一直想知道这个!

4

5 回答 5

4

我认为正常的做法是像第一个例子一样“嵌套”函数。

有几个原因,但大多数情况下它表明所有事情都以特定顺序发生在同一个对象上,中间没有任何事情发生。

话虽如此,如果您不确切知道要做什么,您可能希望从第二个示例开始,这样您就可以轻松返回并添加函数。

基本上,第一个是首选,最终更常见(我认为),第二个有利于测试和开发,第三个只是浪费资源(虽然很小,但没有必要)。

于 2012-04-19T02:27:44.003 回答
4

嵌套函数很好——只要你考虑到可读性。在这个相当简单的示例中,需要花费大量精力来解析语句:

mysql_real_escape_string(trim(str_replace($var, "black", "<body text='%body%'>")));

如果您决定使用嵌套函数,还可以使用智能缩进来更轻松地查看正在发生的事情:

mysql_real_escape_string(
  trim(
    str_replace(
       $var, 
       "black", 
       "<body text='%body%'>"
)));
  • 每个函数参数都在它自己的缩进行上(trim并且str_replace都被用作函数参数,就像$var"black"一样"<body text='%body%'>"
  • 结尾)));清楚地界定了函数嵌套的结束位置。它还提供了一个快速的语法校验和(计算左括号的数量并确保它们与结尾处的右括号的数量相匹配)。
于 2012-04-19T02:40:50.870 回答
2

在我看来,使代码简单易读有很长​​的路要走。当我必须像您的第一个示例那样阅读代码时,我真的不喜欢它。通常是有人试图展示他们可以做出多么复杂的事情。

我认为无论哪种方式你都有它比第一个例子更好。

于 2012-04-19T02:24:59.610 回答
2

你所有的例子都很好;它们之间并没有太大的区别。如果你想让你的第一个例子更具可读性,你可以缩进它:

mysql_real_escape_string(
  trim(
    str_replace($var, "black", "<body text='%body%'>")));

将部分结果分配给临时变量,就像你的第二个和第三个例子一样,也很好。但如果你给变量起有意义的名字,它可能会更有用:

$trimmed = trim($text);
$html = str_replace($trimmed, "black", "<body text='%body%'>");
$sql = mysql_real_escape_string($html);

顺便说一句,您的第一个示例以与其他示例不同的顺序调用函数。

于 2012-04-19T02:33:54.223 回答
1

我在不同方面同意 sloopjohnB 和 Jon 的观点。我相信第一个例子是完全有效的,通常是常见的做法。如果它是其他人将要阅读和处理的代码,那么在某些人看来,您可能会试图通过这样做来展示您的编码知识,但这是正常的做法,如果代码仅供您查看和处理,那么无论如何,如果它对您来说很舒服,请使用它。

就我个人而言,我更喜欢第二种选择。让您更清楚地了解正在发生的事情以及您正在执行的步骤。还为您提供添加或更改功能的选项,在正确的位置/顺序中,更容易。如果你需要在第一个例子中添加一个函数,你很容易忘记一个括号或者把函数或括号放在错误的位置,真的让你失望。

于 2012-04-19T02:32:52.723 回答