Я наткнулся на объявление функции в PHP с ключевым словом array
перед параметром. Теперь, так как вы не объявляете типы в PHP, это выглядит для меня очень странно. Это просто «ошибка», что-то, что кто-то положил туда, что не оценено, или это действительно что-то значит?
public function sendSMTPMail(array $mailContent) { }
У меня такое ощущение, что его там не должно быть и ничего не происходит, но, может быть, я ошибаюсь? Есть ли разница в
public function sendSMTPMail($mailContent) { }
?
Это известно как объявление типа, оно также известно как подсказка типа в PHP5.
Объявления типов позволяют функциям указывать параметры как определенные типы. Если заданное значение имеет неправильный тип, то генерируется ошибка: в PHP 5 это будет исправимая фатальная ошибка, в то время как PHP 7 выдаст TypeError исключение.
Чтобы указать объявление типа, имя типа должно быть добавлено перед именем параметра. Можно сделать объявление, чтобы принимать значения NULL, если для параметра по умолчанию установлено значение NULL.
Допустимые типы
Type Description Minimum PHP version
----------------------------------------------------------------------------------------------------------
Class/interface name The parameter must be an instanceof the given class PHP 5.0.0
or interface name.
----------------------------------------------------------------------------------------------------------
self The parameter must be an instanceof the same class as PHP 5.0.0
the one the method is defined on.
This can only be used on class and instance methods.
----------------------------------------------------------------------------------------------------------
array The parameter must be an array. PHP 5.1.0
----------------------------------------------------------------------------------------------------------
callable The parameter must be a valid callable. PHP 5.4.0
----------------------------------------------------------------------------------------------------------
bool The parameter must be a boolean value. PHP 7.0.0
----------------------------------------------------------------------------------------------------------
float The parameter must be a floating point number. PHP 7.0.0
----------------------------------------------------------------------------------------------------------
int The parameter must be an integer. PHP 7.0.0
----------------------------------------------------------------------------------------------------------
string The parameter must be a string. PHP 7.0.0
----------------------------------------------------------------------------------------------------------
Первоначальный источник: Объявление типа аргумента функции PHP
В вашем случае посмотрите на следующий пример:
function test(array $array)
{
foreach($array as $k=>$v)
{
}
}
test(array("string")); //passed - no error
test("string"); //failed - catchable error
Выход:
Исправляемая фатальная ошибка: Аргумент 1, передаваемый в test (), должен иметь массив типов, заданную строку, вызываться в /var/www/html/test/test1.php в строке 12 и определяться в / var / www / html / test / test1.php в строке 3
Это для Тип подсказки. Если данные, переданные ему, имеют другой тип, тогда он выдаст ошибку (> = PHP 5).
Объявления типов позволяют функциям указывать параметры как определенные типы. Если заданное значение имеет неправильный тип, то генерируется ошибка: в PHP 5 это будет исправимая фатальная ошибка, в то время как PHP 7 вызовет исключение TypeError.
Если тип не определен, переменная будет приведена к типу передаваемых данных. В этом случае, если выполнено, есть проверка для этих данных, переданных ему, то это может вызвать проблемы во время выполнения.