在另一个方法中调用方法是一个好习惯吗? - PHP

时间:2017-09-02 00:43:35

标签: php

我想知道是否建议这样做:

class User {

    public function __construct() {
        parent::__construct();
    }
    public function exists($token) {
        //return true if token exists otherwise return false
    }
    public function createSession($token) {
        if($this->exists($token))
            //create session
        else
            //redirect
    }
}

我认为如果班级的存在方法发生变化,可能不建议这样做,但我认为不会发生,你建议我做什么?

2 个答案:

答案 0 :(得分:4)

从其他方法调用方法没有错。在许多设计中,执行此操作至关重要。这允许您创建重新定义方法的子类,并将调用新定义。

所以,如果你这样做:

class SpecialUser extends User {
    public function exists($token) {
        // determine token existence in some other way
    }
}

然后你可以这样做:

$s = new SpecialUser;
$s->createSession($someToken);

它将使用SpecialUser检查令牌的特殊方式。

答案 1 :(得分:1)

我一直这样做,当我注意到我的方法太长时,我将它隔离并创建另一个私有方法或受保护的方法。另一个原因是它可以重用另一种方法。

以下是一个例子:

class Download extends PHPExcel{

    public function excel2007()
    {
        $excelFormat = $this->excelFormat();
    }

    public function excel2003()
    {
        $excelFormat = $this->excelFormat();
    }

    private function excelFormat()
    {
        return [

            'font_bold' => [

                'font' => array(
                    'bold' => true
                )

            ],
            'font_size' => [

                'font' => array(
                    'size' => 10
                )   

            ],
            'align_center' => [

                'alignment' => array('horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER)    

            ]
        ];
    }
}