아무래도 다른 언어와는 좀 개발 컨셉이 다른 언어라는 느낌이다.
대표적인게 변수의 선언인데...
다른 개발 언어에는 기본적으로 "변수선언 -> 사용" 이라는 개념인데, 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 를 써도 아무런 에러가 발생하지 않기 때문에 저게 잘못 쓴거라는 걸 알기 어렵다.
참 느슨하게 동작하는 언어라고 생각했는데, 엉뚱한데서 꼬장꼬장하게 따진다는 느낌?