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

在PHP中声明变量类型?

如何解决《在PHP中声明变量类型?》经验,为你挑选了4个好方法。

我试图让我的Netbeans用PHP自动完成,我了解到这段代码在PHP中是有效的:

function blah(Bur $bur) {}

几个问题:

    这实际上对我可以传递给blah方法的变量类型施加了任何限制吗?

    如果这只是为了帮助IDE,那对我没问题.如果我不在函数中,如何在PHP中声明变量的类型?

JW... 71

这种类型提示仅适用于验证函数参数; 您不能声明PHP变量必须始终属于某种类型.这意味着在您的示例中,$ bur在调用"blah"时必须是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".



1> JW...:

这种类型提示仅适用于验证函数参数; 您不能声明PHP变量必须始终属于某种类型.这意味着在您的示例中,$ bur在调用"blah"时必须是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".


完整而精彩的答案.我承认我的主要关注点是让我的IDE提示,我已经在这里找到了http://stackoverflow.com/questions/390192 ...就个人而言,我发现PHP的许多方面令人沮丧,但是这只是我对打字langs的偏好.
在那里,即使是那些不喜欢强类型语言的人也同意你:)
PHP的一个很好的步骤是声明类型或使其保持动态的选项.我希望将来能看到PHP
实际上你可以声明`myFunc(MyClass $ x = NULL)`,然后调用`myFunc(NULL)`或`myFunc()`而不会出错.

2> Jim OHallora..:

    如果传递的值不是该类型的值,则为函数参数指定数据类型将导致PHP抛出可捕获的致命错误.但请注意,您只能指定类的类型,而不能指定字符串或整数等基元.

    大多数IDE都可以从PHPDoc样式注释中推断出数据类型(如果提供了注释).例如

/**
 * @var string
 */
public $variable = "Blah";



3> J Cooper..:

它被称为类型提示,与PHP 5一起添加.如果你来自Java这样的语言,它可能不是你所期望的.如果您没有传入预期的类型,它确实会导致抛出错误.但是你不能输入提示原语(no int $ bur).



4> 小智..:

#2 :( ...)如果我不在函数中,如何在PHP中声明变量的类型?

我最近在PHP4&5中听说过" settype() "和" gettype() "
你可以随时随地强制变量类型


来自PHP.net:

bool settype(mixed&$ var,string $ type)

参数

var:要转换的变量.type:类型的可能值为:

"boolean"(或者,因为PHP 4.2.0,"bool")

"整数"(或者,因为PHP 4.2.0,"int")

"float"(仅在PHP 4.2.0之后可用,对于旧版本,使用已弃用的变体"double")

"串"

"阵列"

"宾语"

"null"(自PHP 4.2.0起)

[:D首次访问,第一次评论......]

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