PHP, требующий определенного типа согласования - PullRequest
0 голосов
/ 13 октября 2011

В приведенном ниже коде предполагается, что $ amount является целым числом, но я не проверяю его, чтобы он был таким.

public function addProduct($product, $quantity) {

Приведенный ниже код потребует, чтобы оно было целым числом, НО, если $quantity = '1';, то произойдет сбой, потому что это строка. Могу ли я заставить $quantity указывать целое число в этой функции, или я должен сделать $object->addProduct($product, (int) $quantity);?

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

Наконец, могу ли я пометить $ product как строку или целое число, но если ему передан объект, он сломается (без записи is_object() проверки)

Ответы [ 5 ]

2 голосов
/ 13 октября 2011

Тип подсказки недоступен для примитивного типа. Единственное решение, которое у вас есть в этом случае - это использовать intval () или is_int () в вашем параметре:

public function addProduct($product, $quantity) {
 $quantity = intval($quantity);
}
1 голос
/ 13 октября 2011

Чтобы убедиться, что параметр входит как целое число, просто добавьте эту строку в самом начале вашего метода:

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

  // your code here
}
1 голос
/ 13 октября 2011

Вы должны указать тип аргумента в виде объекта или массива, т. Е. Он не может быть одновременно -> http://php.net/manual/en/language.oop5.typehinting.php

0 голосов
/ 13 октября 2011

Вы приводите тип к целому числу.Вы должны всегда приводить к соответствующему типу данных для всех введенных пользователем значений.

$quantity = (int) $quantity;

$quantity теперь является целым числом

0 голосов
/ 13 октября 2011

Вы можете привести значение в самом методе

$quantity = (int) $quantity;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...