삽질의 현장/- PHP

[삽잡이::php] 느슨한 PHP 변수 타입검사! 함수까지 담는다

shovelman 2016. 7. 11. 21:12


PHP 코드를 조금씩 개선하고자 분석하고 있었습니다.

이 와중에 중복되는 코드이지만

다른 class 파일에 있는 메서드들 때문에 

어떻게 줄일까 고민하고 있었습니다.


그런데 신기하게도 함수까지 변수에 담을 수 있어서

유용하게 코드를 수정한 경험이 있습니다.

우와~ 뭐라꼬~?! 


이에 감동하여 느슨한 언어 PHP 변수의 

데이터형 결정은 어떻게 되는지

간단하게 정리하고자 합니다.


좋아 좋아~ 


PHP 언어에서 변수는 '$'를 붙여 사용합니다.



달러~ 달러~ 달러는 미국의 돈~~ 


아무튼... PHP는 느슨한 언어입니다.

이유는 변수에 값이 할당 될 때 

즉, 담고있는 타입에 따라 자동으로 변환되기 때문입니다.

 PHP는 변수의 선언이 없는 것입니다.


1
2
3
4
5
6
7
8
//c
char ch;
int i;
double d;
 
ch = 'a';
= 4;
= 4.23;
cs


이와 같이 C에서는 미리 변수를 선언해야합니다.



이런식으로 말입니다.


그런데, 반복해서 말씀드리는 것이지만,

유연한 PHP 변수는 좀 다르다는 것입니다.



1
2
3
4
5
6
7
8
9
<?
//php
 
//int형
$iValue = 4;
 
//string형
$sValue = "삽잡이";
?>
cs


선언을 반드시 해야하는 것이 아닌,

변수에 들어가는 값의 타입으로 인해 

변수의 데이터 타입이 결정된다는 것입니다.


Java나 C에서는 상상도 못할 짓입니다.

뭐... 상상할 있을 지도...


자... 아무튼 제가 그래서 경험했던

신기한 PHP의 변수 할당의 매력에 대해 살펴보시죠.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
//php
...
 
$sMethodName = "";
 
if(strlower($sType=== "삽잡이"){
    $sMethodName = $this->ShovelMan();
else {
    $sMethodName = $this->Sapzape();
}
 
echo $sMethodName->Shovel()."<br>";
 
...
?>
cs


이와 같이 변수 하나로

메서드를 담을 수 있다는 것입니다.


아까의 PHP 규칙 때문입니다.

변수에 할당하는 값의 타입에 따라서 데이터 타입이 결정된다


아무튼... 저는 신기했습니다.

유용하게 써야지~

굳~