PHP 5.3 : OOP를 향하는 PHP
Posted by 시리니05月 1
지난 24일자로 PHP v5.3 rc1 이 공개되었습니다.
RC 버젼이라함은 Release Candidate, 즉 출시후보라는 뜻인데요.
이제 말 그대로 공개 준비를 하고 있다는 뜻이 됩니다.

알려진대로 PHP v5.3 은 PHP v6 의 큰 변화폭을 미리 개발자들이
경험할 수 있도록 함으로서 v6 으로의 이전과정을 조금 더 원할하게 돕는 목적이
강합니다. 얼마만큼 바뀌냐구요? PHP 전체를 새로 완전히 재설계하는 수준이라고
보시면 될 것 같습니다. ^^;
대략적인 PHP v5.3 rc1 의 새로운 특징들은 아래와 같습니다.
* Support for namespaces
* Under the hood performance improvements
* Late static binding
* Lambda functions and closures
* Syntax additions: NOWDOC, limited GOTO, ternary short cut "?:" and __callStatic()
* Optional garbage collection for cyclic references
* Optional mysqlnd PHP native replacement for libmysql
* Improved windows support including VC6 and VC9 binaries
* More consistent float rounding
* Deprecation notices are now handle via E_DEPRECATED (part of E_ALL) instead of the E_STRICT error level
* Several enhancements to enable more flexiblity in php.ini (and ini parsing in general)
* New bundled extensions: ext/phar, ext/intl, ext/fileinfo, ext/sqlite3, ext/enchant
* Countless bug fixes and improvements to existing extensions in particular to: ext/openssl, ext/spl and ext/date
위에서 제가 주목하고 싶은 새 특징들을 굵은 글씨로 적어보았는데요,
정말 오랫동안 염원해왔던 것도 있고 혹은 설마 지원될까 생각했던 것들인데
이번 v5.3 rc1 부터 추가가 되었습니다.
Support for namespaces
PHP 언어를 사용하시는 분들 중에서
PHP 가 이제 namespace 를 지원한다고 말씀드리면 '허억 ?!' 하는 반응을
보일 분들이 많으실 겁니다. 저도 지금 제 눈으로 보고 있지만
굉장히 놀랍고 또 반갑습니다. :)
(최상단에 명시되어야 하며, SIRINI₩DIARY₩TODAY 같은 형식으로 하위 범주도 됩니다!)
Lambda functions and closures
우리말로 하면 무명함수 정도 될까요?
어쨌든, 지금 이 순간에도 우리들의 브라우저가 해석해주는 JavaScript 까지
지원하는 기능인데 여태까지 PHP 는 lambda 함수를 지원해주지 않았습니다.
이게 언뜻 보기엔 불필요할 것 같지만, 일회성 함수등을 일일이 정의하거나
callback 함수를 정의할 때 은근히 불편하죠~!
그러나 이제, PHP v5.3 rc1 부터는 lambda 함수를 상콤하게 지원합니다.
사용방법은 타 언어들에서 지원하는 형태와 거의 같습니다.
( function($var) { // some code here ... } ← 함수명이 없고 바로 인수값을 받습니다. )
closure 또한 매우 유용합니다!
lambda 함수와 비슷해 보이지만 또 다른 유용성을 보여주지요~!
(외부에서 변수를 참조할 수 있고, closure 를 통해 직접 변경까지도 가능합니다.)
Optional garbage collection for cyclic references
PHP Class 의 경우 상속 관계에 있는 두 클래스중 자식 클래스가
제대로 메모리상에서 제거되지 않거나 해서 계속 메모리 누수가
발생하는 경우가 있습니다. 일종의 고질적인 버그이긴한데, 여태까지의
PHP 상에서 OOP 지원이 미흡하다는 점은 개발자분들은 다 아는 내용인지라
크게 부각되지는 않았던 것 같네요.
그러나, 이런 애매모호한 문제점들도 이번에 모두 개선됩니다!
계속적인 참조를 통한 메모리 누수를 PHP 가 알아서 막아주어
개발자들이 안심하고 OOP 기능을 사용할 수 있도록 해주었습니다.
More consistent float rounding
PHP 로 수치 해석을 하시는 분들은 상당히 드물지 않을까 생각됩니다.
그러나 저의 경우만 해도, C/C++ 로 코드를 짜기 전에는
PHP 스크립트로 prototype 을 만들어서 테스트를 간혹 해보기도 합니다.
(물론 Python 을 쓰면 좋겠지만 저의 경우 손에 익은 연장이라... =ㅁ=;;)
삼각함수나 제곱근, 유리수 등의 연산을 하다보면
소수점 이하 5자리 이후부터의 정밀도가 조금씩 떨어져서 7자리 부터는
많이 달라지는 현상이 그 동안 PHP 에서 존재했습니다.
일반적으로는 소수점 이하 3자리 정도만 정확도가 보장되어도 좋겠지만
수치 해석이라던지 정밀도가 필요한 연산을 할 경우에는 아무래도
PHP 로 하기엔 무리가 많았죠.
어쨌든 정확도가 무척 향상되었다고 하는데 개인적으로는 매우 기대됩니다.
수치 연산을 할 때 앞으로는 좀 더 기대를 해봐도 좋지 않을까요? ^^;
여기 소개해 드린 것 말고도 다양한 정보들이 준비되어 있습니다.
아래 링크로 안내하겠으니 PHPer 여러분들께 도움이 되길 바랍니다!
참고 URL
http://www.ibm.com/developerworks/kr/library/os-php-5.3new1/index.html
http://www.php.net/archive/2009.php#id2009-03-24-1
http://kr2.php.net/namespaces
http://docs.php.net/functions.anonymous
... 이하 본문과는 전혀 상관없는 개인적인 잡담 ...
아...
개인적으로 요즘 뭐 이런 스케쥴이 다 있냐는 생각이 들 정도로
한가하면서도 묘하게 바쁜 나날인지라 시리니넷이나 블로그에
많이 소홀히 한 것 같습니다. (면목이 없습니다. ㅠ.ㅠ)
최근에 연작으로 구상했던 [추적 6분] 올블로그를 열어 보기까지~ ...는
3편을 반 정도 쓰다가 도중에 중지한 상태입니다. =ㅁ=;;
GR Series 들도 업데이트를 해야 하는데 이노무 일정이 어떻게
조절될 수 있을지 확신이 잘 안서네요. (이런 적은 정말 요즘들어 처음인 듯)
아무튼 다시금 업데이트가 뜸한 점 죄송합니다. (__)
내일부터는 조금씩이라도 자주 얼굴 비추고 업데이트도 좀 더
성실히 하는 착한 sirini 군이 되도록 열심히 삽질하겠습니다.
다 쓰고 나니 새벽 1시 반 정도네요. (항상 한밤중에 하는 夜블로깅~)
좋은 밤 되세요~.
RC 버젼이라함은 Release Candidate, 즉 출시후보라는 뜻인데요.
이제 말 그대로 공개 준비를 하고 있다는 뜻이 됩니다.
알려진대로 PHP v5.3 은 PHP v6 의 큰 변화폭을 미리 개발자들이
경험할 수 있도록 함으로서 v6 으로의 이전과정을 조금 더 원할하게 돕는 목적이
강합니다. 얼마만큼 바뀌냐구요? PHP 전체를 새로 완전히 재설계하는 수준이라고
보시면 될 것 같습니다. ^^;
대략적인 PHP v5.3 rc1 의 새로운 특징들은 아래와 같습니다.
* Support for namespaces
* Under the hood performance improvements
* Late static binding
* Lambda functions and closures
* Syntax additions: NOWDOC, limited GOTO, ternary short cut "?:" and __callStatic()
* Optional garbage collection for cyclic references
* Optional mysqlnd PHP native replacement for libmysql
* Improved windows support including VC6 and VC9 binaries
* More consistent float rounding
* Deprecation notices are now handle via E_DEPRECATED (part of E_ALL) instead of the E_STRICT error level
* Several enhancements to enable more flexiblity in php.ini (and ini parsing in general)
* New bundled extensions: ext/phar, ext/intl, ext/fileinfo, ext/sqlite3, ext/enchant
* Countless bug fixes and improvements to existing extensions in particular to: ext/openssl, ext/spl and ext/date
위에서 제가 주목하고 싶은 새 특징들을 굵은 글씨로 적어보았는데요,
정말 오랫동안 염원해왔던 것도 있고 혹은 설마 지원될까 생각했던 것들인데
이번 v5.3 rc1 부터 추가가 되었습니다.
Support for namespaces
PHP 언어를 사용하시는 분들 중에서
PHP 가 이제 namespace 를 지원한다고 말씀드리면 '허억 ?!' 하는 반응을
보일 분들이 많으실 겁니다. 저도 지금 제 눈으로 보고 있지만
굉장히 놀랍고 또 반갑습니다. :)
(최상단에 명시되어야 하며, SIRINI₩DIARY₩TODAY 같은 형식으로 하위 범주도 됩니다!)
Lambda functions and closures
우리말로 하면 무명함수 정도 될까요?
어쨌든, 지금 이 순간에도 우리들의 브라우저가 해석해주는 JavaScript 까지
지원하는 기능인데 여태까지 PHP 는 lambda 함수를 지원해주지 않았습니다.
이게 언뜻 보기엔 불필요할 것 같지만, 일회성 함수등을 일일이 정의하거나
callback 함수를 정의할 때 은근히 불편하죠~!
그러나 이제, PHP v5.3 rc1 부터는 lambda 함수를 상콤하게 지원합니다.
사용방법은 타 언어들에서 지원하는 형태와 거의 같습니다.
( function($var) { // some code here ... } ← 함수명이 없고 바로 인수값을 받습니다. )
closure 또한 매우 유용합니다!
lambda 함수와 비슷해 보이지만 또 다른 유용성을 보여주지요~!
(외부에서 변수를 참조할 수 있고, closure 를 통해 직접 변경까지도 가능합니다.)
Optional garbage collection for cyclic references
PHP Class 의 경우 상속 관계에 있는 두 클래스중 자식 클래스가
제대로 메모리상에서 제거되지 않거나 해서 계속 메모리 누수가
발생하는 경우가 있습니다. 일종의 고질적인 버그이긴한데, 여태까지의
PHP 상에서 OOP 지원이 미흡하다는 점은 개발자분들은 다 아는 내용인지라
크게 부각되지는 않았던 것 같네요.
그러나, 이런 애매모호한 문제점들도 이번에 모두 개선됩니다!
계속적인 참조를 통한 메모리 누수를 PHP 가 알아서 막아주어
개발자들이 안심하고 OOP 기능을 사용할 수 있도록 해주었습니다.
More consistent float rounding
PHP 로 수치 해석을 하시는 분들은 상당히 드물지 않을까 생각됩니다.
그러나 저의 경우만 해도, C/C++ 로 코드를 짜기 전에는
PHP 스크립트로 prototype 을 만들어서 테스트를 간혹 해보기도 합니다.
(물론 Python 을 쓰면 좋겠지만 저의 경우 손에 익은 연장이라... =ㅁ=;;)
삼각함수나 제곱근, 유리수 등의 연산을 하다보면
소수점 이하 5자리 이후부터의 정밀도가 조금씩 떨어져서 7자리 부터는
많이 달라지는 현상이 그 동안 PHP 에서 존재했습니다.
일반적으로는 소수점 이하 3자리 정도만 정확도가 보장되어도 좋겠지만
수치 해석이라던지 정밀도가 필요한 연산을 할 경우에는 아무래도
PHP 로 하기엔 무리가 많았죠.
어쨌든 정확도가 무척 향상되었다고 하는데 개인적으로는 매우 기대됩니다.
수치 연산을 할 때 앞으로는 좀 더 기대를 해봐도 좋지 않을까요? ^^;
여기 소개해 드린 것 말고도 다양한 정보들이 준비되어 있습니다.
아래 링크로 안내하겠으니 PHPer 여러분들께 도움이 되길 바랍니다!
참고 URL
http://www.ibm.com/developerworks/kr/library/os-php-5.3new1/index.html
http://www.php.net/archive/2009.php#id2009-03-24-1
http://kr2.php.net/namespaces
http://docs.php.net/functions.anonymous
... 이하 본문과는 전혀 상관없는 개인적인 잡담 ...
아...
개인적으로 요즘 뭐 이런 스케쥴이 다 있냐는 생각이 들 정도로
한가하면서도 묘하게 바쁜 나날인지라 시리니넷이나 블로그에
많이 소홀히 한 것 같습니다. (면목이 없습니다. ㅠ.ㅠ)
최근에 연작으로 구상했던 [추적 6분] 올블로그를 열어 보기까지~ ...는
3편을 반 정도 쓰다가 도중에 중지한 상태입니다. =ㅁ=;;
GR Series 들도 업데이트를 해야 하는데 이노무 일정이 어떻게
조절될 수 있을지 확신이 잘 안서네요. (이런 적은 정말 요즘들어 처음인 듯)
아무튼 다시금 업데이트가 뜸한 점 죄송합니다. (__)
내일부터는 조금씩이라도 자주 얼굴 비추고 업데이트도 좀 더
성실히 하는 착한 sirini 군이 되도록 열심히 삽질하겠습니다.
다 쓰고 나니 새벽 1시 반 정도네요. (항상 한밤중에 하는 夜블로깅~)
좋은 밤 되세요~.
0 Responses