当前位置:  开发笔记 > 编程语言 > 正文

像PHP中的重载一样?

如何解决《像PHP中的重载一样?》经验,为你挑选了1个好方法。

我想完成这样的事情:调用一个方法,说"转",然后对不同的数据类型进行不同的"转向",例如,用"螺丝刀"对象调用"turn"/ param使用"turnScrewdriver" "方法,用"steeringWheel"对象/ param调用"turn"使用"turnSteeringWheel"方法等等 - 正在做不同的事情,但它们都被称为"转向".

我想实现这一点,以便调用代码不必担心涉及的类型.在这个例子中,"转弯"应该足以"转动""螺丝刀","steeringWheel"或任何可能需要"转动"的东西.

在C++中,我会通过重载执行此操作 - 并且C++会根据数据类型/签名对事物进行排序 - 但这在PHP中不起作用.

有关我应该从哪里开始的任何建议?switch语句很明显,但我认为必须有一个(更优雅的)OO解决方案.没有?

TIA



1> Bill Karwin..:

我读过davethegr8的解决方案,但似乎可以用更强的打字做同样的事情:

turn();
}

$driver = new Screwdriver();
turn($driver);

$wheel = new SteeringWheel();
turn($wheel);

$obj = new Object(); // any object that does not implement Turnable
turn($object); // ERROR!

PHP允许您对参数使用类型提示,类型提示可以是接口名称而不是类名.所以你可以肯定,如果$object实现Turnable接口,那么它必须turn()方法.每个实现的类都Turnable可以自己完成转换.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有