是否有一种方法可以指示接口中的可选方法(因此契约只表示要给出的参数的数量/类型)?
请对这个问题给予更多的理解和洞察力,并给出解决方案。例如,请参阅下面的讨论:Java接口中的可选方法
在应用程序中,我使用连接到持久性(Doctrine)的侦听器。所以我用了一些方法:
prePersist()
preUpdate()
postPersist()
postUpdate()等。
现在,在重构时,由于有太多的实体(要持久化的对象),我决定将这些方法的部分分割成不同的类。
然而,并不是所有的人都需要.然后.方法。我需要确保给他们适当的数量和类型的论点。如何在PHP中做到这一点?
发布于 2015-01-11 19:01:32
不是的。接口的整个概念是有一个保证方法存在的契约。
但是类可以实现多个接口,因此您可以定义包含该方法的不同接口,而不是将该接口添加到没有该方法的类中。
发布于 2015-01-11 19:41:48
接口不能有可选的方法。这就是界面背后的概念。但是,如果您需要一些可选的东西,那么我建议另外创建您的接口的默认实现,然后您需要的所有类都会扩展。通过这种方式,所有这些类都将实现接口,并且您还可以覆盖所选的方法,并具有可选行为。
就像这样:
interface MyInterface {
public function method1();
public function method2();
}然后,基类实现了接口的方法(我将其抽象为不允许直接使用):
abstract class Base implements MyInterface {
public function method1() {
// dummy
}
public function method2() {
// dummy
}
}然后:
class Optional extends Base {
// method1 is not overridden, so Base' implementation applies
public function method2() {
// something here
}
}发布于 2017-09-14 00:40:07
请参阅这里的例子:
interface Workable
{
public function work();
}
interface Feedable
{
public function eat();
}
interface Employee extends Feedable, Workable
{
}
class Human implements Employee
{
public function work()
{
// ....working
}
public function eat()
{
//.... eating in lunch break
}
}
// robot can only work
class Robot implements Workable
{
public function work()
{
// ....working
}
}https://stackoverflow.com/questions/27890873
复制相似问题