PHP 链式操作优雅的写法?

在 PHP 中使用链式操作有优雅一点的写法吗?
如果一个链式操作比较复杂,需要写很长一行,什么时候换行?

不换行:

function test(){

    $res = $this->erp_base->select([ 'company_id AS city_id', 'city_name AS city_name', 'UNIX_TIMESTAMP() AS create_time', 'UNIX_TIMESTAMP() AS update_time' ]) ->where([ 'if_deleted =' => 0 ])->where_not_in('company_id', $this->_blacklist)->get('company')->result_array();
    
    return $res;
}

数组换行:

function test(){

    $res = $this->erp_base->select([
            'company_id AS city_id',
            'city_name AS city_name',
            'UNIX_TIMESTAMP() AS create_time',
            'UNIX_TIMESTAMP() AS update_time'
        ]) ->where([
            'if_deleted =' => 0
        ])->where_not_in('company_id', $this->_blacklist)->get('company')->result_array();
    
    return $res;
}

我现在用的换行:

function test(){

    $res = $this->erp_base
        ->select([
            'company_id AS city_id',
            'city_name AS city_name',
            'UNIX_TIMESTAMP() AS create_time',
            'UNIX_TIMESTAMP() AS update_time'
        ])->where([
            'if_deleted =' => 0
        ])->where_not_in('company_id', $this->_blacklist)
        ->get('company')
        ->result_array();
    
    return $res;
}

或者这种:

function test(){

    $res = $this->erp_base
    ->select([
        'company_id AS city_id',
        'city_name AS city_name',
        'UNIX_TIMESTAMP() AS create_time',
        'UNIX_TIMESTAMP() AS update_time'
    ])->where([
        'if_deleted =' => 0
    ])->where_not_in('company_id', $this->_blacklist)
    ->get('company')
    ->result_array();
    
    return $res;
}

亦或者这种,和第一个换行的地方箭头保持一致(又时候对不齐):

function test(){

    $res = $this->erp_base
                ->select([
                    'company_id AS city_id',
                    'city_name AS city_name',
                    'UNIX_TIMESTAMP() AS create_time',
                    'UNIX_TIMESTAMP() AS update_time'
                ])->where([
                    'if_deleted =' => 0
                ])->where_not_in('company_id', $this->_blacklist)
                ->get('company')
                ->result_array();
                
    return $res;
}

处女座表示代码风格很重要。各位是怎么写的呢?

阅读 2.1k
2 个回答

这种箭头和方法对齐得做法怎样?

$res = $this->erp_base
            ->select([
                'company_id AS city_id',
                'city_name AS city_name',
                'UNIX_TIMESTAMP() AS create_time',
                'UNIX_TIMESTAMP() AS update_time'
            ])
            ->where(['if_deleted =' => 0])
            ->where_not_in('company_id', $this->_blacklist)
            ->get('company')
            ->result_array();

这样?

function test()
{

    $res = $this
        ->erp_base
        ->select([
            'company_id AS city_id',
            'city_name AS city_name',
            'UNIX_TIMESTAMP() AS create_time',
            'UNIX_TIMESTAMP() AS update_time',
        ])
        ->where([
            'if_deleted =' => 0,
        ])
        ->where_not_in('company_id', $this->_blacklist)
        ->get('company')
        ->result_array();

    return $res;
    
}

基本是照jQ的链式那么写的。不过我一般都是用编辑器的格式化插件自动对齐(VSCode+phpfmt+php runtime)……无所谓优雅,见仁见智吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题