PHP – 使用空接口来确定逻辑

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP – 使用空接口来确定逻辑脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
有几个地方我根据类实现的接口执行逻辑 – 有什么理由可能会出错也可能没出错? (感觉很脏)

这样做的原因是你不必添加任何类属性方法来确定这些东西,基本上在类定义中你可以明确说明它能做什么/不能做什么.

一个用例是ajax调用,有些需要你登录,有些则不需要:

class ajax_ads extends ajax_controller implements no_login {

}

此外,界面中没有方法,为此目的使用soley.

interface no_LOGin {}

然后在基本控制器中:

$controller = controller::factory()
if( !($controller instanceof no_login) && !$controller->LoggedIn()){
    return $controller->redirect(/*login page*/); 
}

使用instance_of看起来轻巧简单,它工作正常,但再次感觉我完全滥用界面的目的.

所以我问,是用一个接口来判断逻辑是个坏主意,糟糕的oop还是’好’?

解决方法

当你需要一个if或一个开关来确定一个对象应该是的状态时,通常一个好的迹象表明你需要多态性.

在您的情况下,应该有一个抽象类:Ajax_Ads和两个扩展类:No_Login_Ajax_Ads扩展Ajax_Ads,Login_Ajax_Ads扩展Ajax_Ads.并根据程序的状态实例化您需要的那个,这可以通过工厂完成.

有关更多信息,请观看以下讲座:The Clean Code Talks — Inheritance,Polymorphism,& Testing

脚本宝典总结

以上是脚本宝典为你收集整理的PHP – 使用空接口来确定逻辑全部内容,希望文章能够帮你解决PHP – 使用空接口来确定逻辑所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。