multiple-interface-implem
全部标签 我正在尝试在Kohana中构建一个表单向导,并且我正在学习一些东西。我学到的可能最有效的一件事是在我的类结构中使用状态模式来管理用户在表单过程中可能处于的不同步骤。在做了一些研究之后,我一直认为最好的方法可能是使用一个接口(interface),并让所有步骤都充当实现该接口(interface)的状态。状态验证后,它会更改一个session变量到下一步,可以在界面初始加载时读取,并调用正确的状态来使用。这种方法有意义吗?如果是这样,我到底该如何实现(我如何最好地构建文件系统?)这是我一直在做的粗略的开始:set('step','2');}publicfunctiondo_this_af
我正在尝试在Kohana中构建一个表单向导,并且我正在学习一些东西。我学到的可能最有效的一件事是在我的类结构中使用状态模式来管理用户在表单过程中可能处于的不同步骤。在做了一些研究之后,我一直认为最好的方法可能是使用一个接口(interface),并让所有步骤都充当实现该接口(interface)的状态。状态验证后,它会更改一个session变量到下一步,可以在界面初始加载时读取,并调用正确的状态来使用。这种方法有意义吗?如果是这样,我到底该如何实现(我如何最好地构建文件系统?)这是我一直在做的粗略的开始:set('step','2');}publicfunctiondo_this_af
我一直在谷歌搜索,试图了解使用接口(interface)如何为我提供多重继承。classA{functiondo1(){}functiondo2(){}functiondo3(){}}classBextendsA{functiondo4(){}functiondo5(){}functiondo6(){}}classCextendsB{}在上面的例子中,类C拥有类A和类B的所有方法。但是,类B也拥有类A的所有方法,这是不必要的。我的搜索结果是使用接口(interface)来解决这个问题,方法是将方法移至类并创建接口(interface),如下所示。interfaceA{functiond
我一直在谷歌搜索,试图了解使用接口(interface)如何为我提供多重继承。classA{functiondo1(){}functiondo2(){}functiondo3(){}}classBextendsA{functiondo4(){}functiondo5(){}functiondo6(){}}classCextendsB{}在上面的例子中,类C拥有类A和类B的所有方法。但是,类B也拥有类A的所有方法,这是不必要的。我的搜索结果是使用接口(interface)来解决这个问题,方法是将方法移至类并创建接口(interface),如下所示。interfaceA{functiond
我认为在代码示例中看到问题比首先编写问题要容易得多。这是我的PHP代码:method();}}$Object1=newConcreteClass();$Object2=newAClass();$Object1->method($Object2);以上代码导致如下错误:Fatalerror:DeclarationofConcreteClass::method()mustbecompatiblewiththatofAnAbstractClass::method()问题是php似乎没有将AnAbstractClass::method和ConcreteClass::method的签名识别为兼容
我认为在代码示例中看到问题比首先编写问题要容易得多。这是我的PHP代码:method();}}$Object1=newConcreteClass();$Object2=newAClass();$Object1->method($Object2);以上代码导致如下错误:Fatalerror:DeclarationofConcreteClass::method()mustbecompatiblewiththatofAnAbstractClass::method()问题是php似乎没有将AnAbstractClass::method和ConcreteClass::method的签名识别为兼容
IteratorAggregate是一个创建外部迭代器的接口(interface):classmyDataimplementsIteratorAggregate{public$property1="Publicpropertyone";public$property2="Publicpropertytwo";public$property3="Publicpropertythree";publicfunction__construct(){$this->property4="lastproperty";}publicfunctiongetIterator(){returnnewArra
IteratorAggregate是一个创建外部迭代器的接口(interface):classmyDataimplementsIteratorAggregate{public$property1="Publicpropertyone";public$property2="Publicpropertytwo";public$property3="Publicpropertythree";publicfunction__construct(){$this->property4="lastproperty";}publicfunctiongetIterator(){returnnewArra
我看到很多人说Symfony2、ZendFramework2和其他人是事件驱动的。在桌面世界中,通过事件驱动编程,我理解应用程序会在其状态发生变化时通知其观察者。由于PHP应用程序是无状态的,因此无法做这样的事情。IE。当用户使用界面时,将观察者绑定(bind)到观察变化的View。相反,它需要一个新的请求过程来更新View。所以,这不是一个事件,而是一个全新的请求.另一方面,还有一个类似的概念:事件驱动架构。在这里,您可以阅读两者:http://en.wikipedia.org/wiki/Event-driven_programminghttp://en.wikipedia.org/
我看到很多人说Symfony2、ZendFramework2和其他人是事件驱动的。在桌面世界中,通过事件驱动编程,我理解应用程序会在其状态发生变化时通知其观察者。由于PHP应用程序是无状态的,因此无法做这样的事情。IE。当用户使用界面时,将观察者绑定(bind)到观察变化的View。相反,它需要一个新的请求过程来更新View。所以,这不是一个事件,而是一个全新的请求.另一方面,还有一个类似的概念:事件驱动架构。在这里,您可以阅读两者:http://en.wikipedia.org/wiki/Event-driven_programminghttp://en.wikipedia.org/