PHP需要特定类型强制

时间:2011-10-13 13:30:05

标签: php casting

使用下面的代码,$ quantity被假定为一个整数,但我没有对它进行任何检查以要求它。

public function addProduct($product, $quantity) {

下面的代码将要求它是一个整数,但如果$quantity = '1';它将失败,因为它是一个字符串。我是否有可能强制$quantity在此函数中以整数形式出现,或者我必须做$object->addProduct($product, (int) $quantity);吗?

public function addProduct($product, int $quantity) {

最后,我是否可以将$ product标记为字符串或整数,但如果它传递了一个对象,它将会中断(不写is_object()项检查)

5 个答案:

答案 0 :(得分:2)

类型提示不适用于基本类型。在这种情况下,你唯一的解决方案是在你的param上使用intval()或is_int():

public function addProduct($product, $quantity) {
 $quantity = intval($quantity);
}

答案 1 :(得分:1)

您必须将参数的类型指定为Object或Array,即它不能同时为 - > http://php.net/manual/en/language.oop5.typehinting.php

答案 2 :(得分:1)

要确保param以整数形式输入,只需在方法的最开头添加此行:

public function addProduct($product, $quantity) {
  $quantity = intval( $quantity );

  // your code here
}

答案 3 :(得分:0)

您可以在方法本身中转换值

$quantity = (int) $quantity;

答案 4 :(得分:0)

您将类型转换为整数。您应该始终为所有用户输入的值转换为适当的数据类型。

$quantity = (int) $quantity;

$quantity现在是一个整数