在PHP中声明variablestypes?
我试图让我的Netbeans与PHP自动完成 ,我知道这个代码在PHP中是有效的:
function blah(Bur $bur) {}
几个问题:
- 这实际上是否对我可以传递给blah方法的variablestypes施加任何限制 ?
- 如果这只是为了帮助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以来。
- 指定一个函数参数的数据types将导致PHP抛出一个可捕获的致命错误,如果你传递一个不是那种types的值。 但请注意,只能指定类的types,而不能指定string或整数等基本types。
- 如果提供的话,大多数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是由它所使用的上下文决定的。