PHP 5.3 Alpha 1

개발 | 2008/08/01 22:00 | 디토

PHP 5.3 알파 1이 나왔습니다. 아직 윈도우용 바이너리는 없으니 PHP Snapshots 사이트에서 받으시기 바랍니다.

이런 저런 커다란 변화가 있는데, 꽤 큰 파장을 일으킬 것 같네요. 제발 5.3 정식판이 나왔을 때 넘어가는 서버가 많기를… T_T


5.3에 추가된 기능 (아래에 나와있는 코드는 테스트해보진 않았지만 잘 돌아갈겁니다):

이름 공간

// a.php
namespace LangDev;
class Lambda { ... }

// b.php
include "a.php";
new LangDev::Lambda;

using LangDev;
new Lambda;

using LangDev::Lambda as LDLambda;
new LDLambda;

실행 시간에 static 메소드 바인딩

이거 있으면 쉽게 Active Record 패턴을 구현할 수 있습니다.

class A {
static function getClassName() {
return get_class();
}
static function printClassName() {
echo static::getClassName();
}
}

class B extends A { /* nothing! */ }

B::printClassName(); // prints "B"

__callStatic 매직 메소드

class StaticCaller {
static function __callStatic($name, $args) {
echo "$name $args[0]!\n";
}
}

StaticCaller::hello("LangDev"); // hello LangDev!
StaticCaller::thank("you"); // thank you!

람다 함수와 클로져

결국 들어가네요!

$lambda = function () { echo "Hello, world!"; }
$lambda();

// closure
$action = "Hello";
$lambda = function ($name) use ($action) { echo "$action, $name!"; }
$lambda("world");

이항식 ?:

// echo $a == $b ? 'equal' : '';
echo $a == $b ?: 'equal';


그 밖의 변화

  • NOWDOC (HEREDOC과 비슷하지만 변수 확장을 하지 않음), 제한 있는 GOTO (!)
  • intl (i18n/l10n 지원), phar (jar 같은), fileinfo (파일 포맷 검출), sqlite3 확장
  • 사이클릭 가비지 콜렉터 지원 (optional)
  • libmysql을 대체하는 MySQLnd 드라이버 (optional)
  • 윈도 2000 미만 버전 (98, NT4, …) 지원 안함
태그 : php