PHP > LIBRARY > Type hinting/Type 설정하기/Throw error
 
PHP
Library
Tip&Tech
Q&A
 
PHP Function
phpschool
그누보드
LIBRARY
  HOME > PHP > LIBRARY
 
Type hinting/Type 설정하기/Throw error
작성일 : 19-01-08
조회 : 109  

parameter 이용해서 static 값 가져오기

<?php class A{ public static function checkValue(){ echo "I'm from class A"; } public static function test(self $abc){ //self 이용해 type 제한 $abc::checkValue(); } } class B extends A{ public static function checkValue(){ echo "I'm from class B"; } } $b = new B(); $b->test($b); // "I'm from class B"; ?>

3. Array

<?php class A{ public function checkValue(array $arr){ print_r($arr); } } $b = new A(); $arr = ['a', 'b', 'c']; $none_array = "It's not array"; $b->checkValue($arr); //정상 작동 $b->checkValue($none_array); // 오류 발생 ?>

4. callable(다른 말로하면 callback, parameter에 함수 넣도록 하기)

callble을 넣으면 함수인 type만을 갖도록 제한 가능하다

<?php function callBackFun($name){ echo "Hello. I'm ".$name."."; } class A{ public function checkValue(callable $callback, $name){ call_user_func($callback, $name); // $callback($name)이란 같은 의미, 걍 함수 실행 } } $a = new A(); $a->checkValue("callBackFun", "sin"); ?>

5. Scalar Type(int, float, string, bool)

앞에 이것들 붙이면 이 타입들만 취할 수 있다.

<?php class A{ public function checkValue(int $int, float $float, string $str, bool $bool){ echo ( "Int is ".$int."<br/>". "Float is ".$float."<br/>". "String is ".$str."<br/>". "Boolean is ".$bool."<br/>" ); } } $a = new A(); $a->checkValue(3, 4.5, "Hello", true); // Int is 3 // Float is 4.5 // String is Hello // Boolin is 1 ?>

문제! 이렇게 하면 Float에 Int를 넣어도 작동하고, String에 3을 넣어도 작동한다.

엄격하게 Scarlar Type을 작동하기 위해서는 declare(strict_types=1); 을 통해 관리해줘야함

<?php declare(strict_types=1); class A{ public function checkValue(int $int, float $float, string $str, bool $bool){ echo ( "Int is ".$int."<br/>". "Float is ".$float."<br/>". "String is ".$str."<br/>". "Boolean is ".$bool."<br/>" ); } } $a = new A(); $a->checkValue(3, 3, 10, true); // type과 맞지 않기 때문에 오류 발생 ?>

 
 

Total 77
번호 제   목 조회
공지 php 라이브러리 423
77 매직해시(MAGIC HASHES) 취약점 136
76 Trait 136
75    Trait 149
74 Overloading 142
73    Overloading 138
72 Type hinting/Type 설정하기/Throw error 133
71    Type hinting/Type 설정하기/Throw error 110
70    Type hinting/Type 설정하기/Throw error 141
69 object clone 152
68    object clone 135
67 serialize / unserialize 133
66 spl_autoload_register(오토로드) 122
65 window에서 composer깔기 139
64 Exception/try/throw/catch 139
63 Error의 종류 134
62    Error의 종류 137
61    Error의 종류 136
60 eval 134
59 Magic_methods 142
58    Magic_methods 145
 1  2  3  4  
 
개인홈페이지 덤벙닷컴은 프로그래머와 디자이너위한 IT커뮤니티 공간입니다.
Copyright ⓒ www.dumbung.com. All rights reserved.