|
|
1
11
因此,您希望避免订单和履行资源控制器的代码重复,并且有点枯燥。好的 无法输入特征
作为马修
stated
,您无法键入提示特征,这就是您出现绑定解析错误的原因。除此之外,即使它是可类型化的,容器也会混淆它应该实例化哪个模型,因为有两个模型
通常,有一个界面来伴随一个特征是一种很好的做法。除了界面可以类型化之外,您还坚持 Interface Segregation “如果需要”的原则是一种良好的做法。
现在它是可打印的。让我们来谈谈容器混淆问题。 语境结合contextual binding . 这是明确告诉它何时以及如何将抽象解析为具体的能力。
你基本上是告诉容器
错误的工具我们刚刚通过引入不必要的复杂性消除了重复的控制器代码,这种复杂性甚至更糟糕。
遗产消除这些问题的正确工具就是继承。引入一个抽象的基注释控制器类,并从中扩展了两个浅层注释控制器类。
啊,错误的语言没那么快:
尽管重写方法参数在构造函数中工作得很好,但它对其他方法根本不起作用!构造函数是 special cases .
好吧,也许在一个更好的世界里。
更新:请参阅 PHP 7.4 的类型差异支持 那我们该怎么办?
如果我们明确告诉路由器如何加载
对于资源控制器,占位符名称取决于传递给
路线定义保持不变。
它比第一种解决方案更好,因为它不依赖于易于更改的URL段,而依赖于很少更改的路由占位符。它也是通用的
我们可以改变第一种解决方案,利用路由参数而不是URL段。但是,当拉雷维尔提供给我们时,没有理由手动执行。 是的,我知道,我也感觉不太好。 |
|
|
2
1
编辑:正如@Stefan善意地指出的那样,很可能仍然难以将接口解析到具体类,因为它需要在不同的情况下解析到不同的类。您可以访问服务提供商中的请求,并使用路径来确定如何解决它,但我对此有点怀疑。我认为将它们放在单独的控制器中,并使用继承/特征来共享公共功能可能是更好的选择,因为每个控制器中的方法可以键入所需的对象,然后将它们传递给等效的父方法。 |
|
|
3
0
就我的情况而言,我有以下资源:
注意单数和复数。 |
|
|
Josjojo · Alpine.js菜单切换问题 1 年前 |