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
조회 : 19  

Type hinting

기본적으로 php는 다른 언어와 달리 앞에 $만 붙이면 int든 bool이든 str이든 상관없이 변수 지정이 가능하다

(매우 유연)

<?php $abc = 3 + true; // true가 1로 계산되서 4가 됨 $abc = 3 + "true"; // 오류는 뜨지만 echo하면 3이 출력됨 ?>

만약 함수의 파라미터나 변수 등을 지정할 때, 꼭 특정한 타입만 입력되야 한다고 제한하고 싶다면 어떻게 해야할까?? Type hinting을 사용하면 된다.

e.g) function car(Charger $charger, $volume);
// $charger에는 Charger라는 클래스만이 parameter로 들어올 수 있다. 

1. Class/interface name

내가 정해놓은 class나 interface만 parameter로 들어올 수 있음

class 사용 예시

<?php class Charger{ private $charger; } class Wheel{ private $wheel; } class Vehicle{ function getcharge(Charger $charger, $volume){} } $car = new Vehicle(); $charger = new Charger(); $wheel = new Wheel(); $car->getcharge($charger, 50); // 정상 작동 $car->getcharge($wheel, 50); // 오류 ?>

implements 사용예시

<?php interface Steal{ public function cut(); } class Charger implements Steal{ private $charger; public function cut(){ echo "making Charger..."; } } class Wheel{ private $wheel; public function cut(){ echo "making Wheel..."; } } class Vehicle{ function make(Steal $steal){ $steal->cut(); } } $car = new Vehicle(); $charger = new Charger(); $wheel = new Wheel(); $car->make($charger); // 정상 작동 $car->make($wheel); // 오류(interface implements 안했기 때문에) ?>

2. Self(static)

self를 이용하면 static 값이나 static 값을 포함하는 class만 올 수 있게 할 수 있다.

그전에 먼저 static의 작동원리 간단하게 알아보자

<?php class A{ public static function checkValue(){ echo "I'm from class A"; } public static function test(){ self::checkValue(); // 만약 이렇게 되면 I'm from class A 가 출력 됨 static::checkValue(); // 만약 이렇게 되면 I'm from class B 가 출력 됨 } } class B extends A{ public static function checkValue(){ echo "I'm from class B"; } } $b = new B(); $b->test(); ?>

parameter 이용해서 static 값 가져오기

<?php

 
 

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