웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
PHP 4에서 PHP 5로 이행
2004.04.30 21:20
http://www.php.net제 개인 홈 페이지 : http://www.joeunmart.com ( 홈 자랑해서 미안해유^^;;)
이전 버전과 호환하지 않는 변경점
기존 PHP 4 코드의 대부분은 변경 없이 작동하지만, 다음의 비호환 변경점에 주의를 해야 합니다:
strrpos()와 strripos()가 전체 문자열을 needle로 사용합니다.
문자열 오프셋의 비정상적인 사용은 E_WARNING 대신 E_ERROR를 발생합니다.
array_merge()가 배열만을 받아들이게 변경되었습니다. 배열이 아닌 값을 넘기면, 그러한 인수마다 E_WARNING을 발생합니다. 코드가 갑작스레 E_WARNING를 표시하기 시작할 수 있으므로 주의하십시오.
더이상 Apahce2 SAPI에서 PATH_TRANSLATED 서버 변수를 자동으로 설정하지 않습니다. PHP 4에서는 아파치가 생성하지 않았을 때, SCRIPT_FILENAME 서버 변수와 동일하게 설정했었습니다. 이 변경은 CGI 규격에 따르기 위한 점입니다. 자세한 정보는 버그 #23610를 참고하십시오.
Tokenizer 확장은 더 이상 T_ML_CONSTANT 상수를 정의하지 않습니다. error_reporting을 E_ALL로 설정하면, PHP가 주의문을 생성합니다. T_ML_CONSTANT는 사용되지 않았지만, PHP 4에서 정의되어 있었습니다. PHP 4와 PHP 5 둘 다, T_COMMENT 상수가 //와 /* */를 모두 인식합니다. 그러나 PHP 5에서 도입한, PHP가 처리하는 PHPDoc 스타일 주석 /** */은, T_DOC_COMMENT로 인식합니다.
variables_order가 "S"를 포함하고 있으면, $_SERVER는 argc와 argv를 가져야 합니다. 시스템이 $_SERVER를 생성하지 않게 설정하였다면, 물론 존재하지 않아야 합니다. 변경 후에는 variables_order 설정에 관계 없이, CLI 버전에서 argc와 argv를 사용할 수 있게 만듭니다. 또한, CLI 버전은 항상 전역의 $argc와 $argv도 가집게 되었습니다.
프로퍼티가 없는 객체를 더 이상 "빈" 것으로 판단하지 않습니다.
클래스는 사용하기 전에 정의해야 합니다.
예 B-1. strrpos()와 strripos()가 전체 문자열을 needle로 사용합니다.
<?php
var_dump(strrpos('ABCDEF','DEF')); //int(3)
var_dump(strrpos('ABCDEF','DAF')); //bool(false)
?>
예 B-2. 프로퍼티가 없는 객체를 더 이상 "빈" 것으로 판단하지 않습니다.
<?php
class test { }
$t = new test();
var_dump(empty($t)); // echo bool(false)
if (!$t) {
// 이 부분이 실행됩니다.
}
?>
다음 예제는 PHP 4에서는 유효하지만, PHP 5에서는 치명적인 오류를 생성합니다.
예 B-3. 클래스는 사용하기 전에 정의해야 합니다.
<?php
$test = new fubar();
$test->barfu();
class fubar {
function barfu() {
echo 'fubar';
}
}
?>
출처 : php.net
이전 버전과 호환하지 않는 변경점
기존 PHP 4 코드의 대부분은 변경 없이 작동하지만, 다음의 비호환 변경점에 주의를 해야 합니다:
strrpos()와 strripos()가 전체 문자열을 needle로 사용합니다.
문자열 오프셋의 비정상적인 사용은 E_WARNING 대신 E_ERROR를 발생합니다.
array_merge()가 배열만을 받아들이게 변경되었습니다. 배열이 아닌 값을 넘기면, 그러한 인수마다 E_WARNING을 발생합니다. 코드가 갑작스레 E_WARNING를 표시하기 시작할 수 있으므로 주의하십시오.
더이상 Apahce2 SAPI에서 PATH_TRANSLATED 서버 변수를 자동으로 설정하지 않습니다. PHP 4에서는 아파치가 생성하지 않았을 때, SCRIPT_FILENAME 서버 변수와 동일하게 설정했었습니다. 이 변경은 CGI 규격에 따르기 위한 점입니다. 자세한 정보는 버그 #23610를 참고하십시오.
Tokenizer 확장은 더 이상 T_ML_CONSTANT 상수를 정의하지 않습니다. error_reporting을 E_ALL로 설정하면, PHP가 주의문을 생성합니다. T_ML_CONSTANT는 사용되지 않았지만, PHP 4에서 정의되어 있었습니다. PHP 4와 PHP 5 둘 다, T_COMMENT 상수가 //와 /* */를 모두 인식합니다. 그러나 PHP 5에서 도입한, PHP가 처리하는 PHPDoc 스타일 주석 /** */은, T_DOC_COMMENT로 인식합니다.
variables_order가 "S"를 포함하고 있으면, $_SERVER는 argc와 argv를 가져야 합니다. 시스템이 $_SERVER를 생성하지 않게 설정하였다면, 물론 존재하지 않아야 합니다. 변경 후에는 variables_order 설정에 관계 없이, CLI 버전에서 argc와 argv를 사용할 수 있게 만듭니다. 또한, CLI 버전은 항상 전역의 $argc와 $argv도 가집게 되었습니다.
프로퍼티가 없는 객체를 더 이상 "빈" 것으로 판단하지 않습니다.
클래스는 사용하기 전에 정의해야 합니다.
예 B-1. strrpos()와 strripos()가 전체 문자열을 needle로 사용합니다.
<?php
var_dump(strrpos('ABCDEF','DEF')); //int(3)
var_dump(strrpos('ABCDEF','DAF')); //bool(false)
?>
예 B-2. 프로퍼티가 없는 객체를 더 이상 "빈" 것으로 판단하지 않습니다.
<?php
class test { }
$t = new test();
var_dump(empty($t)); // echo bool(false)
if (!$t) {
// 이 부분이 실행됩니다.
}
?>
다음 예제는 PHP 4에서는 유효하지만, PHP 5에서는 치명적인 오류를 생성합니다.
예 B-3. 클래스는 사용하기 전에 정의해야 합니다.
<?php
$test = new fubar();
$test->barfu();
class fubar {
function barfu() {
echo 'fubar';
}
}
?>
출처 : php.net
댓글 5
-
천상원
2004.05.15 14:46
-
써니루루☆
2004.04.30 22:11
좋은 내용입니다.
위 언급하신것보다 훨씬 많은 내용이 있지만 비교적 간단한 개괄적인 내용을 소개해 주셨네요. -
토끼군
2004.05.02 08:46
/** ... */ 형태의 주석을 언어 자체에서 지원하기 시작한다는 게 의외로 새롭(?!)군요. :S -
써니루루☆
2004.05.02 14:32
예전엔 PHPDoc라는 프로그램을 받아서 사용해야 Document파일을 생성할 수 있었죠. -
◁aeries▷
2004.06.02 16:37
/** ... */ 자바를 떠올렸습니다...;
제목 | 글쓴이 | 날짜 |
---|---|---|
심플한 원단위를 콤마로 나타내주기 [2] | zentoo.com | 2003.11.11 |
플래시느낌의 유동적인 메뉴 [9] | jabusim | 2003.11.13 |
동영상 오른쪽 버튼 방지 소스 입니다... [9] | 김성목 | 2003.11.15 |
자바로 만들어진 계산기 [1] | 현규웅 | 2003.11.20 |
팝업공지창 다시 안뜨게 하는 소스[날짜지정가능] [17] | lemin | 2003.11.20 |
3D 효과의 원형 거울을 띄우자. [6] | 줄리앙 | 2003.11.21 |
익스플로러에서 인쇄 누르면 페이지 이동.... [3] | 조한웅 | 2003.11.28 |
크리스마스 날짜 카운터 [1] | keymove | 2003.12.04 |
소스연구1 테이블 자동으로 늘었다 커지기 태클환영 [9] | 박한웅 | 2003.12.04 |
오른버튼 누를때 메뉴 뜨게하기(깔끔버전) [5] | 럽 | 2003.12.09 |
소스보기를 일부 차단하는 방법입니다. [12] | Juny. | 2003.12.12 |
들어갈때 시작페이지 설정하는거... [2] | 쉿!비밀 | 2003.12.17 |
링크에 마우스를 올리면 배경 변하게 하는 소스 | 봉팀장 | 2003.12.30 |
화면 오른쪽 아래부분에 떠있는 메뉴 레이어(마우스 오버시 부메뉴 펼쳐짐) [7] | 봉팀장 | 2003.12.30 |
[초간단 자바스크립트!] 아이프레임 이용한 이미지 갤러리(?) | ∑Ztxy | 2004.01.02 |
마우스 올리면 링크 텍스트를 무지개빛으로_12시20분 수정.;; [1] | keymove | 2004.01.06 |
아기창 자동으루 띄우고 엄마창 자동으루 죽이기 -_-;; [13] | 후르츠 | 2004.01.09 |
[초간단 자바스크립트!] 홈페이지접속 시간,날짜 표시기 [3] | ∑Ztxy | 2004.01.09 |
Thinking In Java 2nd Edition | n25 | 2004.01.14 |
[초간단 자바스크립트(강의)!]나만의 익스플로러창 만들기[허접] [2] | ∑Ztxy | 2004.01.17 |
무슨무슨함수들이 안되는지 지금쓰는게 안될까바 걱정됬는데;;