在 MVC 中的另一个用户控制器中扩展一个用户控制器是否正确?
Is it right extend an user controller in another user controller in MVC?
我处于一种情况,我正在考虑扩展用户控制器以消除代码复制,但我不确定这是否会破坏某些 MVC 规则,以及这是否是一种好的做法。为了说明,下面是一个代码示例。
class MyController extends CoreController {
public function myMethod() {
echo 'Hello world!';
}
}
class OtherController extends MyController {
public function otherMethod() {
echo 'Hello life';
}
}
我决定使用 PHP traits,这样我就可以进行水平继承,消除代码复制,我认为我遵循了 MVC 原则。
trait Shared {
public function sharedMethod() {
echo 'Hello, i am sharedMethod()!';
}
}
class MyController extends CoreController {
use Shared;
public function myMethod() {
echo 'Hello, i am myMethod()!';
}
}
class OtherController extends CoreController {
use Shared;
public function otherMethod() {
echo 'Hello, i am otherMethod()!';
}
}
$MyController = new MyController();
$MyController->sharedMethod(); // Hello, i am sharedMethod()!
$OtherController = new OtherController();
$OtherController->sharedMethod(); // Hello, i am sharedMethod()!
我处于一种情况,我正在考虑扩展用户控制器以消除代码复制,但我不确定这是否会破坏某些 MVC 规则,以及这是否是一种好的做法。为了说明,下面是一个代码示例。
class MyController extends CoreController {
public function myMethod() {
echo 'Hello world!';
}
}
class OtherController extends MyController {
public function otherMethod() {
echo 'Hello life';
}
}
我决定使用 PHP traits,这样我就可以进行水平继承,消除代码复制,我认为我遵循了 MVC 原则。
trait Shared {
public function sharedMethod() {
echo 'Hello, i am sharedMethod()!';
}
}
class MyController extends CoreController {
use Shared;
public function myMethod() {
echo 'Hello, i am myMethod()!';
}
}
class OtherController extends CoreController {
use Shared;
public function otherMethod() {
echo 'Hello, i am otherMethod()!';
}
}
$MyController = new MyController();
$MyController->sharedMethod(); // Hello, i am sharedMethod()!
$OtherController = new OtherController();
$OtherController->sharedMethod(); // Hello, i am sharedMethod()!