source

PHP: bool vs boolean type 힌트

factcode 2022. 10. 13. 23:36
반응형

PHP: bool vs boolean type 힌트

PHP에서 type heading을 더 많이 사용하려고 합니다.오늘 나는 기본 파라미터로 부울을 취하는 함수를 쓰고 있었는데, 나는 그 형식의 함수가

function foo(boolean $bar = false) {
    var_dump($bar);
}

는 실제로 치명적인 오류를 발생시킵니다.

클래스 유형 힌트가 있는 매개 변수의 기본값은 NULL일 수 있습니다.

유사한 형태의 함수는

function foo(bool $bar = false) {
    var_dump($bar);
}

하지 않다.단, 둘 다

var_dump((bool) $bar);
var_dump((boolean) $bar);

똑같은 결과를 내다

: false를 검출되었습니다.

왜 이러한가?이것은 Java의 래퍼 클래스와 유사합니까?

http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration

경고
위의 스칼라 유형의 에일리어스는 지원되지 않습니다.대신 클래스 또는 인터페이스 이름으로 취급됩니다.예를 들어 부울을 파라미터 또는 반환타입으로 사용하려면 bool 타입이 아닌 클래스 또는 인터페이스 부울 인스턴스인 인수 또는 반환값이 필요합니다.

<?php
function test(boolean $param) {}
test(true);
?>

위의 예는 다음과 같습니다.

치명적인 오류:Uncaught TypeError: test()에 전달된 인수 1은 지정된 부울의 인스턴스여야 합니다.

한마디로 말해서boolean의 에일리어스입니다.bool, 및 에일리어스는 유형 힌트에서 작동하지 않습니다.
"실제" 이름 사용: bool


와 는 유사성이 없습니다.

타입 힌트는 어떤 타입을 수용해야 하는지를 함수에 지시하는 것과 같습니다.

유형 캐스팅은 유형 간에 "전환"하는 것입니다.

허용되는 배역은 다음과 같습니다.

(int), (integer) - cast to integer
(bool), (boolean) - cast to boolean
(float), (double), (real) - cast to float
(string) - cast to string
(array) - cast to array
(object) - cast to object
(unset) - cast to NULL (PHP 5)

php 타입 캐스팅에서는 (부울)과 (부울) 모두 동일합니다.

언급URL : https://stackoverflow.com/questions/44009037/php-bool-vs-boolean-type-hinting

반응형