考虑到接口隔离原理,这是面向对象编程 - SOLID原则中最“谈论”的原则之一,我想知道是否有可能在一个Laravel控制器中有两个不同的类?例如:
<?php
namespace ...;
use App\Http\Controllers\Controller;
interface VehicleInterface
{
public function ...
}
class CarController extends Controller implements VehicleInterface
{
...
}
class ElectricCar implements VehicleInterface
{
...
}
从技术上讲,您可以在同一个文件中拥有多个类。
使用Laravel(或任何框架),不是真的,如果你想使用它的自动加载器,因为classname = filename是惯例。
此外,控制器处理请求。您可以在控制器函数中加载不同类的任意数量的实例。但是在控制器文件中定义其他类并不是你应该做的。
这个问题至少有两个问题:
ElectricCar
和CarController
应该共享相同的界面。 ElectricCar
模拟汽车,可能使用像accelerateTo(120mph)
这样的方法,而CarController
可能有类似accelerateCarTo(Car5, 120mph)
的方法。它们也被用于不同的含义:ElectricCar
模拟一辆车,而CarController
管理对单个或多个车辆的访问,这也是从模拟应用程序流的抽象构造中调用的。deposit()
和withdraw()
等方法对ATM建模的接口应该分成两个接口,每个接口只满足其中一个功能。目标是依赖实体必须仅使用并查看它真正需要的部分。