PHP 유형 힌트로 boolean을 지정하지만 boolean을 지정해야 합니다

5871 단어 PHP

문제 코드


type_hint.php
<?php
class Main{
    public function type_hint_boolean(boolean $arg){
        var_dump($arg);
    }

    public function type_hint_integer(integer $arg){
        var_dump($arg);
    }
}

$main = new Main();
$main->type_hint_boolean(true);
$main->type_hint_integer(1);
출력
PHP Fatal error:  Uncaught TypeError: Argument 1 passed to Main::type_hint_boolean() must be an instance of boolean, boolean given,
must be an instance of boolean, boolean given
꼭 boolean이어야 하는데 나한테 맡겼어 boolean???
참고로 인덱스의 경우 다음과 같은 오류가 발생했습니다.
must be an instance of integer, integer given

답안


유형 힌트boolean 또는 integer를 사용할 수 없으며 bool, int로 지정해야 합니다.
type_hint.php
<?php
class Main{
    public function type_hint_bool(bool $arg){
        var_dump($arg);
    }

    public function type_hint_int(int $arg){
        var_dump($arg);
    }
}

$main = new Main();
$main->type_hint_bool(true);
$main->type_hint_int(1);
출력
bool(true)
int(1)

해설

boolean 또는 integer를 지정하면 해당 이름의 클래스 인스턴스에 대한 유형 힌트가 됩니다.
따라서 아래 코드는
type_hint.php
<?php
class Main{
    public function type_hint_boolean(boolean $arg){
        var_dump($arg);
    }
    public function type_hint_integer(integer $arg){
        var_dump($arg);
    }
}

class boolean{
}
class integer{
}

$main = new Main();
$main->type_hint_boolean(new boolean());
$main->type_hint_integer(new integer());
출력
object(boolean)#2 (0) {
}
object(integer)#2 (0) {
}
신뢰할 수 있음

참고 자료


공식 문서
PHP7 조사(36)는 수평 다관절형의 힌트를 쓸 수 있다
PHP: bool vs boolean type hinting

좋은 웹페이지 즐겨찾기