类型化类变量php

时间:2013-11-16 20:38:43

标签: php oop

它应该是一个微不足道的,但我还没有找到在PHP中对类变量进行类型转换的正确语法。我试过这样的事:

public int $approved;

public (int) $approved;

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

3 个答案:

答案 0 :(得分:1)

PHP没有语法可以在类声明本身中完成您想要的任务。但是,社区在很大程度上围绕文档规范laid out by phpDocumentor进行了合并。在您的情况下,您将在属性的doc块中使用@var关键字。

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

如果您希望使用此方法查看记录良好的代码示例,我建议您查看the Symfony Framework codebase(尽管它们可能并不总是记录类属性)。

在写入属性时,您无法将类型强制转换为int,除非您创建了private并创建了一个设置器来强制它们via __set()。那是不灵活的,因为你需要考虑很多不同的类型。 PHP是动态类型的;大多数使其表现不佳的尝试都可能充满挫败感。

答案 1 :(得分:0)

是的,PHP不具有强类型(它会将任何变量转换为它所使用的内容)。

你所能做的就是写

public $approved;

并且记住你要在其中存储数值(当它们来自数据库时,PHP甚至可能将值存储为字符串,并在您开始时立即隐式转换为int用它来计算)。

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

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

但这不是标准行为。

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

答案 2 :(得分:0)

除了大家所说的内容外,我想补充一点:

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