有没有一个原则建议不要做这样的事情:
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);
我一直想知道这一点!
通常的做法是像第一个示例一样"嵌套"函数。
有几个原因,但大多数情况下,它表明一切都以特定的顺序发生在同一个对象上,中间没有任何事情发生。
话虽如此,如果您不知道要做什么,您可能希望从第二个示例开始,以便您可以轻松地返回并添加函数。
基本上,第一个是首选的,最终更常见(我认为),第二个有利于测试和开发,第三个只是浪费资源(当然它很小,但没有必要)。
函数很好 - 只要你考虑到可读性。在这个相当简单的示例中,需要投入大量的精力来解析语句:
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%'>"
也是如此) - 结尾
)));
清楚地界定了函数嵌套的结束位置。它还提供了一个快速的语法校验和(计算左括号的数量,并确保它们与末尾的右括号数量匹配)。
使代码变得简单和可读有很长的路要走。当我必须像您的第一个示例一样阅读代码时,我真的不喜欢它。通常是有人试图展示他们可以制造出多么复杂的东西。
我认为无论哪种方式,你都有它比第一个例子更好。
你所有的例子都很好;它们之间并没有太大区别。如果要使第一个示例更具可读性,可以缩进它:
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);
顺便说一句,您的第一个示例以与其他示例不同的顺序调用函数。
我同意 sloopjohnB 和 Jon 的观点,但在不同的方面。 我相信第一个例子是完全有效的,通常是常见的做法。 如果它是其他人将要阅读和处理的代码,那么在某些人看来,您似乎试图通过这样做来展示您的编码能力,但这是正常的做法,如果代码只是供您查看和处理,那么无论如何,如果您觉得舒服,请使用它。
就我个人而言,我更喜欢第二种选择。 让您更清楚地了解正在发生的情况以及您正在执行的步骤。 还为您提供了在适当的位置/顺序中添加或更改功能的选项,变得更加容易。 如果您需要在第一个示例中添加一个函数,则很容易忘记括号或将函数或括号放在错误的位置,从而真正使您失望。