更干净的PHP代码

时间:2010-04-21 20:04:38

标签: php

if (isset($_GET['sort_by']) && strlen($_GET['sort_by']) > 0)
{
    $sort_by = $_GET['sort_by'];
}
else
{
     $sort_by = 'desc';  
}

我怎样才能重写它,使它看起来更干净,线条更少..我喜欢一个内衬嘿嘿

4 个答案:

答案 0 :(得分:5)

第一个选项是将默认值移到if块之外,从而删除else。如果你想在if语句中保留条件,这可能是最好的 如果您使用条件(三元)运算符将其更多地添加到一个参数中,它将保留清晰度。

$sort_by = 'desc'
if (isset($_GET['sort_by']) && strlen($_GET['sort_by']) > 0){
    $sort_by = $_GET['sort_by'];
}

虽然strlen不会返回小于0,但您可以删除> 0

$sort_by = 'desc'
if (isset($_GET['sort_by']) && strlen($_GET['sort_by']) ){
    $sort_by = $_GET['sort_by'];
}

另一个选择是将所有内容移动到一行并使用条件运算符。不利的一面是,它采取了远远的(在我的选项中),并开始放置太多的一行。

$sort_by =  isset($_GET['sort_by']) && strlen($_GET['sort_by']) ? $_GET['sort_by'] : 'desc';

如果您稍微更改了功能以便可以使用empty(),则由于长度减少,条件运算符变得可用。问题是字符串“0”被视为空。

$sort_by =  !empty($_GET['sort_by']) ? $_GET['sort_by'] : 'desc';

答案 1 :(得分:1)

$sort_by = in_array( $_GET['sort_by'], array( 'asc', 'desc' ) ) ? $_GET['sort_by'] : 'desc';

这也检查有效性

答案 2 :(得分:0)

无论你如何重写它(Yacoby都有一个很好的单行程),如果你经常这样做(null和strlen检查查询字符串变量),你应该将它包装在一个带有选项“default”的函数中值“参数”。

即。 function getQueryStringVar($key, $defaultValue = '') { ...

答案 3 :(得分:0)

我想我会补充一点,单行不会自动意味着更清晰的代码,但Yacoby在清理代码方面做得很好(以及使其成为单行代码)。但是我会整理他的一个班轮来阅读......

$ sort_by = empty($ _ GET ['sort_by'])? 'desc':$ _GET ['sort_by'];

仅仅因为!阅读代码的人有时会错过符号 - 我认为这在我看来更清晰:)