2014년 11월 24일 월요일

PHP의 변수 선언.

오랜만에 다시 PHP 를 잡으니, 좀 어색하다.
아무래도 다른 언어와는 좀 개발 컨셉이 다른 언어라는 느낌이다.

대표적인게 변수의 선언인데...
다른 개발 언어에는 기본적으로 "변수선언 -> 사용" 이라는 개념인데, PHP 는 선언하지 않고 사용한다 (오히려 선언하면 오류가 난다).
물론 다른 언어에서도 선언 안하고 사용하는 경우가 있긴하지만, 대개 "강제 변수선언" 옵션정도는 있는게 보통이다.

그런데, PHP 는 강제 변수 선언 옵션 자체가 없이 변수이기만 하면 무조건 사용된다. (php.ini 파일을 수정하면 경고 정도는 발생시키지만, 그렇다고 안돌아 가지는 않는다.)
쉽게 말해 다른 언어에서는 변수명 오타가 발생했을 경우, 없는 변수명이라는 에러가 발생하겠지만, PHP 는 그냥 넘어간다.

그럼에도 불구하고 변수 선언기능이 없느냐? ... 하면, 존재한다.
단, 클래스에서만 쓰인다.

<?
 //var $userId = "KKK";  --> 여기서 var, public, private 를 쓰면 오류남.
 //public $puVal;
 //private $prVal;

 $jon = new _Test();
 $userId = "SSS";
 
 $get_jon = $jon->_call01();
 echo "get Call01 Value : $get_jon ";
 
 $get_jon = $jon->_call02();
 echo "get Call02 Value : $get_jon ";
 
 class _Test
 {
  var $userId = "KKK";
  
  public function _call01()
  {
   echo "_call01 Value : $userId ";
   return $userId;
  }

  public function _call02()
  {
   echo "_call02 Value : $this->userId ";
   return $this->userId;
  }
 }
 ?>
 

이렇게 클래스 안에서만 변수 선언이 가능.

주의 할것은 클래스 생성시 변수값을 초기화 하는 var $userId 는 전역 변수 성질을 가진다고 되어 있지만, 같은 클래스 내에서도 $this->userId 라고 써야 사용 된다는 것.
이게 참 문제인게, 그냥 $userId 를 써도 아무런 에러가 발생하지 않기 때문에 저게 잘못 쓴거라는 걸 알기 어렵다.


참 느슨하게 동작하는 언어라고 생각했는데, 엉뚱한데서 꼬장꼬장하게 따진다는 느낌?