我试图让我的 Netbeans 使用 PHP 自动完成,我了解到这段代码在 PHP 中是有效的:
function blah(Bur $bur) {}
几个问题:
- 这实际上对我可以传递给 blah 方法的变量类型有任何限制吗?
- 如果这只是为了帮助 IDE,那对我来说很好。如果我不在函数中,如何在 PHP 中声明变量的类型?
我试图让我的 Netbeans 使用 PHP 自动完成,我了解到这段代码在 PHP 中是有效的:
function blah(Bur $bur) {}
几个问题:
这种类型提示仅适用于验证函数参数;您不能声明 PHP 变量必须始终是某种类型。这意味着在您的示例中,当调用“blah”时,$bur 必须是 Bur 类型,但可以将 $bur 重新分配给函数内部的非 Bur 值。
类型提示仅适用于类或接口名称;例如,您不能声明参数必须是整数。
PHP 的类型提示与 Java 不同的一个令人讨厌的方面是不允许使用 NULL 值。因此,如果您想要传递 NULL 而不是对象的选项,则必须删除类型提示并在函数顶部执行以下操作:
assert('$bur === NULL || $bur instanceof Bur');
编辑:最后一段自 PHP 5.1 起不适用;您现在可以使用 NULL 作为默认值,即使有类型提示。
编辑:您还可以安装SPL 类型处理扩展,它为您提供字符串、整数、浮点数、布尔值和枚举的包装器类型。
编辑:您还可以使用 PHP 5.1 起的“数组”,以及 PHP 5.4 起的“可调用”。
编辑:自 PHP 7.0 起,您还可以使用“string”、“int”、“float”和“bool”。
/**
* @var string
*/
public $variable = "Blah";
2021 年更新:从 PHP 7(此时已经有几年历史)开始,也可以为函数参数声明原始类型。可空性也可以用 ? 从 7.1 开始在类型前面。您现在也可以声明返回类型。所以现在这是有效的 PHP:
public function hasFoo(?int $numFoos) :bool {
phpStorm(我目前首选的 IDE)很乐意使用所有这些类型来完成代码,所以我不需要像以前那样需要那么多的 phpDoc 注释来输入。
它被称为类型提示,是 PHP 5 中添加的。如果您来自 Java 之类的语言,这可能不是您所期望的。如果您没有传入预期的类型,它确实会引发错误。但是,您不能键入提示原语(没有 int $bur)。
#2 : (...) 如果我不在函数中,如何在 PHP 中声明变量的类型?
我最近听说PHP4 & 5 中的“ settype() ”和“ gettype()
”
你可以随时轻松地强制变量类型
来自 PHP.net:
bool settype ( 混合 &$var , 字符串 $type )
参数
var : 被转换的变量。type :类型的可能值是:
[ :D 第一次访问,第一次评论...]