RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

PHP4->PHP5로 변경되면서 많은 변화가 있었다.

하지만 실제적으로 크게 와 닿는 부분은 없었던거 같다.
(사실 그렇게 화려하게 -_- 코드를 짤 일이 없어서 그런가?..)

PHP5 가 정식 릴리즈한 2004년 7월 이후 만 3년 만에 PHP v6(이하 PHP6) 에 대한 이야기를 얻을수 있었다.

몇가지 변경사항이 발생 하였는데 그 내용은 다음과 같다.

  1. 향상된 Unicode 에 지원.
  2. Namespace 지원
  3. Web 2.0 관련 SOAP,XML 기능 강화
  4. 일부 함수(function) 및 일부 확장모듈 ( Freetype 1, GD 1) 삭제

이다.

1. 향상된 Unicode 지원
Unicode 에 대한 지원은 문자셋(charset)에서 해방(?)을 위해선
어쩔 수 없는 선택이 되가는 분위기라 '거스를 수 없는 대세' 이랄까?

PHP6 에서도 Unicode 를 처리하기 위한 코어 함수들의 성능 향상이 있었다고 한다.

2. Namespace 지원
co-work 을 하거나 혹은 개발 소스가 방대하다 보면 함수/클래스의 이름이 중복되는 경우가 발생한다.
그렇다 보니 이름을 지으면서 점점 이상한 함수명이 발생 하게 되면서
나중에는 코드를 분석하데 직관적이지 못했다.

이러한 문제를 해결하기 위하여 Namespace 를 통하여 해결 할 수 있도록 하였다.

Namespace 의 이용. (Language : php)
  1. <?php
  2. // XMLWriter라는 클래스를 생성하고 싶다.
  3. // 하지만 PHP 에 내장된 XMLWriter 라는 클래스명 과 중박되게 된다. 이를 피하기 위하여 NathanAGood 라는 Namespace 를 지정한다.
  4. namespace NathanAGood;
  5. class XMLWriter
  6. {
  7.     // Implementation here...
  8. }
  9.  
  10. $writer = new NathanAGood::XMLWriter();
  11.  
  12. ?>




3. Web 2.0 환경에서 SOAP,XML 지원 활성화.
SOAP 는 이기종간 데이터 전송을 위한 프로토콜로써 많이 알려져있다.

SOAP에 대한 것은 PHP4 에서부터 확장 모듈(PECL) 로 제공 되었었다.
이것이 PHP5 에서는 내장 되었으나 기본으로 설치되진 않았다. 이것이 PHP6 로 오면서 기본적으로 활성화 되어 이용 할 수 있도록 변경이 된것이다.

XMLReader/XMLWriter 의 제공을 통하여 XML 이용을 보다 수월하게 할 수 있게 되었다.
이 XML 확장 역시 SOAP 와 같이 기본으로 제공하게 되면서
XML 파싱(Parsing)에 대한 압박에서 해방를 ( --)/ 만세!!!!

새로 추가 되는것이 있는가 하면
반대로 사라지는 부분도 있다.

1. 기존에 포함 되었던 확장 모듈의 삭제(  GD 1 & Freetype 1 )
GD 1, Freetype 1 이 어떠한 역할을 하는지는 굳이 설명하지 않아도 되리라 믿는다.
이 모듈이 삭제 되는 이유는 GD1/FreeType1 에 대한 새 버전이 나와있는 상황이고 보다 나은 기능과 성능을 제공함으로 굳이 이것을 포함하고 있어야 할 이유가 없다는 판단으로 제거가 되는것 같다.

역시 구시대 유물은 정리하는게 좋은거 같다 ㅡㅡ;

2. php.ini 의 일부 설정값 삭제
magic_quotes
register_globals
register_long_arrays
safe_mode

magic_quotes 는 특수기호에 대한 회피(escape)를 위하여 자동으로 제공하였던 기능이다.
보통은 이러한 기능은 sql-injection 공격을 회피하기 위한 방법으로 이용 되었으나.

이렇게 데이터가 들어갔다 나왔다 하면서 addslashes(),stripslashes() 등의 뻘짓을 해왔던 분이라면 얼마나 고된 일인지 알 것이다. magic_quotes 가 편리함을 준건 사실이지만. 이것이 원본 데이터를 보존한다는 의미에선 올바른 선택이 아니며 또한 sql-injection 에 대해서 자유로운 것도 아니였다.

다른 방법으로 mysql_escape_string() 이나 pg_escape_string() 등 을 이용하거나.
아니면 SQL 문에 변수를 치환(Binding) 을 통한 쿼리 작성법을 권장하고 있다.

SQL Query 이용시. (Language : php)
  1. <?php
  2. // magic_quotes = on 일 경우
  3. $sql = "INSERT INTO USERS (USERNAME) VALUES $_GET['username']";
  4. ?>
  5.  
  6.  
  7.  
  8. <?php
  9. // 데이터 바인딩(Binding)을 통한 쿼리 이용
  10. $statement = $dbh->prepare("INSERT INTO USERS (USERNAME) VALUES ?");
  11. $statement->execute(array($_GET['username']));
  12. ?>


전자의 경우는 DBMS 에 의존적인 쿼리가 발생 할 수 있다. 물론 이는 의도하지 않는 동작을 할 가능성이 높으며 나중에 데이터 출력에도 부가적으로 데이터를 변조 해줘야 하는 수고 스러움이 따른다.

후자의 경우는 전자의 경우 처럼 문자열(String) 을 변경 하는 방식이 아닌 데이터 자체를 치환(Binding) 함으로 해서
전자의 경우보다 sql-injection 에 대한 위험도가 훨씬 나아질 수 있다.
성능 또한 query-cache 등을 이용 할 수 있기 때문에 훨씬 앞선다고 볼 수 있다.

register_globals
의 이슈는 끊임 없이 제기 되었다.
이전에 편리함이 지금의 독이 된 케이스가 아닌가 한다.
너무 편리한 나머지 Form 데이터 전송중 변조의 우려가 끊임없이 제기 되었고
실제로 이 때문에 의한 사고(?) 도 다수 발생 하였다.
이에 PHP.net 에선 PHP v4.2 부터 기본적으로 꺼져있는 기능으로 제공 된다.
하지만 여전히 옵션엔 존재하였다.

그랬던 것이 PHP6 에서는 아예 제거 된다.
그러니 앞으로 는 $_GET,$_POST,$_SESSION 등의 변수 이용을 필수라고 봐야 한다.

register_long_arrays 이 무엇인고 하니
$HTTP_*_VARS 에 이용과 관련된 옵션이라고 한다. 대해선 크게 이슈화 된것을 보지 못하였는데.

$HTTP_*_VARS 대신 $_* 형 함수($_GET,$_POST,$_SESSION 같은..)를 이용하도록 하려는 이유로 빠진거 같다..ㅡㅡ;

safe_mode 옵션 또한 삭제 된다.
safe_mode 옵션은 흔히 공용서버에서 php 이용시 활성화 하는데
이에 따라 몇몇 함수의 이용에 제약을 따르는 경우가 있다.( 예 : fopen() 함수 )
이것이 PHP6 에서는 사라지게 되면서 별다른 문제는 안될 것이지만
safe_mode 를 활성화 한 상태에서 한번쯤 테스트 해볼 필요성을 제기한다.

3. ASP 식 Script Tag 삭제

더불어 ASP 식의 Script Tag 옵션 ( <% ... %> ) 또한 더이상 지원하지 않는다.
사실상 있으나 마나한 옵션인데 이번 기회에 제거 하려는것 같다.

4. POSIX 정규식 지원 삭제
POSIX 정규식(POSIX regular expressions) 함수도 더이상 지원하지 않게 된다.
ereg(),eregi() 등의 함수가 이에 해당하며 이를 Perl 정규식( Perl regular expressions) 로 치환 해야 한다.
Perl 정규식 함수들이 POSIX 정규식 함수들 보단 빠른 것으로 대체적으로 나왔었는데.
정규식 문법도 유사하고 사실 두 함수를 혼용하는 경우도 없지 않아 있었다.

하지만 완벽하게 호환되는 문법도 아니고 eregi()->preg_match() 식으로 별칭(alias) 화 하기는 힘들듯 싶다.
그러니 직접 변경하는 수 밖에 없다 ㅡㅡ;

이와 같이 PHP6 에서는 많은 변화가 있었다.
물론 아직 Beta 버젼도 나오지 않은 개발단계이긴 하나 미리 대비한다고 나쁠건 없지 않는가?

Unicode 지원과 Namespace 관련된 내용은 PHP v5.3 에 추가 될 예정이다.

지금 당장 PHP6 를 쓰고 싶다면 지금도 받아 볼 수 있지만( PHP6 snepshot download ).
PHP6 로 이동하기엔 너무 부담이 크다면 PHP v5.3로 업그레이드를 해보는것도 어떤가?

출처 : IBM dW - The future of PHP

2008/05/09 14:52 2008/05/09 14:52
이 글에는 트랙백을 보낼 수 없습니다
방문객....  | 2008/07/01 16:05
난 php6개발자 홈페이지 찾으면서 이런걸 봤는데... 홈페이지도 검색엔진으로는 복잡하게 뒤꽁무니(?)속에 있고..... 많은양의 변화도 있고....
위에 적은것만있는게 아니라 앞으로 외서로 국내 출간되면 더 쇼킹한 내용이 더 있을법한...
[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다
Dot:Where is ......
byDot
Where is ......
전체 (177)
주절거림 (60)
윈도우벽지 (2)
Shoveling.. (9)
주워들은것들.. (48)
요집이 괜찮더라!! (0)
찍사놀이 (7)
관심꺼리~ (4)
«   2024/03   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
  1. 내 맘대로 보는 세상  2009
    맘에 안드는 Internet Explorer 업데이트 방침!
  2. 시리니  2008
    브라우저 업데이트, 작지만 큰 실천입니다.
  3. Dinosur와 KM의 Blog  2007
    저도 보통 사람
  1. 2019/02 (1)
  2. 2018/07 (1)
  3. 2018/01 (11)
  4. 2017/12 (10)
  5. 2017/10 (1)