php强制类型

时间:2010-09-05 16:06:28

标签: php

我有一个同事不断分配变量并强制他们的类型。例如,他会声明如下:

$this->id = (int)$this->getId();

或者在返回时,他将始终返回值:

return (int)$id;

据我所知,php是一种松散类型的语言,因此我不知道该演员正在做什么。我真的很想知道这样做有什么好处 - 如果有的话 - 或者他是否只是在浪费时间和精力去做这件事?

2 个答案:

答案 0 :(得分:4)

有一些好处。

  1. 类型检查即可。没有类型检查,0 == false和1 == true。
  2. 消毒即可。如果要将值插入SQL查询,则无法进行SQL注入,因为字符串值将转换为零。
  3. 完整性即可。它可以防止插入无效的数据库数同样,它转换为零,因此您不会尝试将字符串插入数据库中的整数字段。

答案 1 :(得分:1)

  

将值显式转换为   整数,使用(int)或   (整数)演员。 然而,在大多数情况下   因为a,不需要演员表   值将自动转换   如果是操作员,功能或控制   结构需要一个整数   参数。值也可以   用intval()转换为整数   功能

http://www.php.net/manual/en/language.types.integer.php#language.types.integer.casting

  

PHP不需要(或支持)   变量中的显式类型定义   宣言;变量的类型是   由上下文确定   使用变量。也就是说,如果是   字符串值分配给变量   $ var,$ var成为一个字符串。如果   然后将整数值赋值给   $ var,它变成一个整数。

     

PHP自动类型的一个例子   转换是加法运算符   '+'。如果任一操作数是浮点数,   那么两个操作数都被评估为   漂浮,结果将是一个   浮动。否则,操作数将是   解释为整数,和   结果也将是一个整数。注意   这不会改变类型   操作本身;唯一的   改变是操作数的方式   评估和什么类型的   表达本身就是。

http://www.php.net/manual/en/language.types.type-juggling.php

你可以这样做。

function hello($foo, $bar) {
    assert(is_int($foo));
    assert(is_int($bar));
}

http://php.net/manual/en/function.assert.php