我无法理解PHP作者添加类型提示的动机.在它出现之前我很高兴地活着.然后,当它被添加到PHP 5时,我开始在任何地方指定类型.现在我认为这是一个坏主意,只要鸭子打字可以确保类之间的最小耦合,并利用代码模块化和重用.
感觉就像类型提示将语言分成两种方言:有些人用静态语言风格编写代码,有提示,有些人则坚持使用良好的旧动态语言模型.还是不是"全有或全无"的情况?在适当的时候,我应该以某种方式混合这两种风格吗?
这不是静态与动态类型,PHP仍然是动态的.这是关于接口的合同.如果您知道一个函数需要一个数组作为其参数之一,请在函数定义中强制它.我更喜欢快速失败,而不是稍后在函数中出错.
(另请注意,您无法为bool,int,string,float指定类型提示,这在动态上下文中是有意义的.)
只要函数中的代码肯定依赖于传递参数的类型,就应该使用类型提示.无论如何代码都会生成错误,但类型提示会为您提供更好的错误消息.
PHP小组添加类型提示的动机是为那些习惯于Java风格的OOP提供另一个功能,让平台更熟悉,更舒适,更有吸引力.反过来,这将使PHP更加"企业就绪",这将有助于Zend的核心业务.
除了营销,它确实有其用途.如果您正在编写一个以特定方式对参数进行操作的方法,如果该参数是其他方式,则会导致意外(通常是静默)失败,那么使用类型提示可确保代码在开发期间中断,而不是在生产中中断.
如果您决定使用接口而不是具体或抽象类来进行类型提示.原因很简单,PHP不允许多重继承,但允许实现多个接口.因此,如果有人试图使用你的库,那么实现你的界面就不会有困难了,相反,他必须扩展你的抽象/具体类,因为他已经扩展了另一个.