在PHP中声明variablestypes?

我试图让我的Netbeans与PHP自动完成 ,我知道这个代码在PHP中是有效的:

function blah(Bur $bur) {} 

几个问题:

  1. 这实际上是否对我可以传递给blah方法的variablestypes施加任何限制
  2. 如果这只是为了帮助IDE,那对我来说很好。 我如何在PHP中声明variables的types,如果我不在函数中?

这种types提示只适用于validation函数参数; 你不能声明一个PHPvariables必须总是具有某种types。 这意味着在你的例子中,当调用“blah”时,$ bur必须是Burtypes的,但是$ bur可以被重新分配给函数内的非Bur值。

types提示只适用于类或接口名称; 例如,您不能声明参数必须是整数。

PHP的一个令人讨厌的types提示,这是不同于Java的,是NULL值是不允许的。 所以,如果你想要传递NULL而不是一个对象的选项,你必须删除types提示,并在函数的顶部做这样的事情:

 assert('$bur === NULL || $bur instanceof Bur'); 

编辑:这最后一段不适用自PHP 5.1; 您现在可以使用NULL作为默认值,即使使用types提示。

编辑:你也可以安装SPLtypes处理扩展,它给你包装types的string,整数,浮点数,布尔值和枚举。

编辑:你也可以使用自PHP 5.1以来的“数组”,以及自PHP 5.4以来的“可调用”。

编辑:你也可以使用“string”,“int”,“float”和“bool”自PHP 7.0以来。

  1. 指定一个函数参数的数据types将导致PHP抛出一个可捕获的致命错误,如果你传递一个不是那种types的值。 但请注意,只能指定类的types,而不能指定string或整数等基本types。
  2. 如果提供的话,大多数IDE可以从PHPDoc样式注释中推断出数据types。 例如
 /** * @var string */ public $variable = "Blah"; 

这就是所谓的types提示,加上了PHP 5.如果你是来自像Java这样的语言,那么你不会期待什么。 如果你没有传入预期的types,它会引发一个错误。 你不能键入提示原语,虽然(没有int $ bur)。

#2:(…)如果我不在函数中,我怎么能声明在PHP中的variables的types?

我最近在PHP4&5中听说过“ settype() ”和“ gettype() ”
您可以随时轻松地强制variablestypes


从PHP.net:

布尔settype(混合$ var,string$types)

参数

var:被转换的variables。 键入:types的可能值是:

  • “布尔”(或者,自PHP 4.2.0,“布尔”)
  • “整数”(或者,自PHP 4.2.0起,“int”)
  • “浮动”(只能从PHP 4.2.0以上,旧版本使用不推荐使用的variables“double”)
  • “串”
  • “arrays”
  • “目的”
  • “null”(自PHP 4.2.0起)

[:D首次访问,首先评论…]

这实际上是否对我可以传递给blah方法的variablestypes施加任何限制?

这被称为types提示 。 根据我刚刚链接到的PHP文档,是的,它确实对参数types施加了限制:“ 未能满足types提示会导致可捕获的致命错误。

我如何在PHP中声明variables的types,如果我不在函数中?

阅读types杂耍 。 你不能在PHP中明确定义一个variables的types,它的types是由它所使用的上下文决定的。