我想知道是否建议这样做:
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
}
}
我认为如果班级的存在方法发生变化,可能不建议这样做,但我认为不会发生,你建议我做什么?
答案 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)
]
];
}
}