类型转换类变量 php


Typecasting class variables php

这应该是一件小事,但我还没有找到PHP中类型转换类变量的正确语法。我试过这样:

public int $approved;

public (int) $approved;

但这两种方式脚本都不会运行。我有很多名字,所以在代码中直观地看到数据类型将有助于区分。有什么办法吗?

PHP 没有语法来完成类声明本身中你想要的。然而,社区在很大程度上围绕phpDocumentor制定的文档规范进行了整合。 在您的情况下,您将在属性的文档块中使用 @var 关键字。

/**
 * @var int
 */
public $approved;
/**
 * @var int
 */
protected static $othervar;

如果你想看到一个使用这种方法的记录良好的代码示例,我建议查看Symfony Framework代码库(尽管它们可能并不总是记录类属性)。

写入属性时,您将无法强制类型int,除非您将它们设为private并创建了一个资源库来通过 __set() 强制它们。这是不灵活的,因为您需要考虑许多不同的类型。 PHP 是动态类型的;大多数试图让它表现得其他的尝试可能会充满挫败感。

是的,

不,PHP 没有强类型(它会将任何变量转换为它使用的样子)。

你所能做的就是写

public $approved;

请记住,您希望在其中存储数值(当它们来自数据库时,PHP 甚至可能会将值存储为字符串,并在您开始使用它进行计算时隐式转换为 int)。

一些编辑器支持类似phpdoc的提示,可以帮助您记住哪个变量是哪种类型:

/**
 * @var int
 */
public $approved;

但这不是标准行为。

无论如何,没有办法始终如一地强制 PHP 在变量上只使用一种类型。

除了大家说的,我还想补充一点:

在你真的需要一个真正的INT(没有代表数字的字符串)然后你可以使用intval