티스토리 툴바



2012/05/09 14:01

php 5.2-> 5.4 버전업 문제 해결

 

ereg 계열 함수 사용시 오류 메시지.

ereg,eregi,ereg_replace

>>> stripos,str_ireplace,preg_replace,preg_match 등으로 대체

eregi preg_replace 대체 가능.

eregi('123','123456');

preg_replace('/123/I','123456');

ereg계열에서는 대소문자 구분이

ereg eregi 구분되었음.

그것을 preg_replace 에서는 /i  추가해주면 된다.

preg_match 같음.

 

split 함수 사용시 오류

>>> explode 함수로 대체. split 정규식을 지원했으나, explode 지원하지 않음.

 

session_register 삭제

 

 

//'eregi 함수사용을 권장하지 않는다' 라는 메세지 출력.

Deprecated: Function eregi() is deprecated in /home/nuhome/web/nux/admin/plugin.php on line 3

파일 수정을 하지 않을시 임시방편

 

@error_reporting(E_ALL & ~(E_NOTICE | E_DEPRECATED | E_STRICT));

 

함수 인자에 변수를 참조로 전달할 수 없게됨

 

<?
function modify($array) {
$array[] = 'zero';
}
$array = array(0, 1, 2);
modify(&$array);

?>

 

PHP Fatal error: Call-time pass-by-reference has been removed; If you would like to pass argument by reference, modify the declaration of modify(). in test.php on line 8

 

 

global 변수를 함수의 인자로 넘길 수 없음.

function test($_REQUEST){

}

 

magic_quotes_gpc에 대한 이해.

http://blog.naver.com/egirl5?Redirect=Log&logNo=110012870549

 

php 5.3 주요 변경 사항

http://kr.php.net/manual/en/migration53.incompatible.php

php 5.4 주요 변경 사항

http://kr.php.net/manual/en/migration54.incompatible.php

5.4 관련 한글 정리 문서

http://crizin.net/display/dev/What's+New+in+PHP+5.4

저작자 표시 비영리 변경 금지

'HTML/CSS/PHP' 카테고리의 다른 글

php 5.2-> 5.4 버전업 문제 해결  (0) 2012/05/09
array 삭제후 재정렬  (0) 2012/01/26
CSS3로 만든 재미난 움직이는 버튼들  (2) 2011/12/13
이미지 처리  (0) 2011/12/06
정규식  (0) 2011/12/02
Code가 Packed(한줄로)되어 있어서 보기 어려울 때!!  (0) 2011/11/11
Trackback 0 Comment 0
2012/04/02 09:23

js pattern

http://shichuan.github.com/javascript-patterns/

저작자 표시 비영리 변경 금지
Trackback 0 Comment 0
2012/03/23 11:31

[Android] final 을 쓰는 이유


public class Test extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView( R.layout.myTest );

final TextView outText = (TextView)findViewById(R.id.textView01);

LinearLayout linear = (LinearLayout)findViewById(R.id.linear01);

linear.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
outText.setText("Touch");
return true;
}
return false;
}
});
}
}


자. 위에 소스를 보자.
outText 는 Activity의 member도 아니고 onTouch의 지역변수도 아니고
onCreate의 지역변수로 선언되어있다. Handler는 자신을 등록하는 외부메서드의
지역변수를 참조해야 하는데
, 이때 외부 지역 변수에 final 지정자를 반드시 붙여야한다.

final 지정자를 붙이지 않으면 아래와 같은 오류를 배터낸다.
Cannot refer to a non-final variable outText inside an inner class defined in a different method

outText 변수는 onCreate 가 리턴되면 사라지는 지역 변수이다.
반면, onTouch메서드는 TouchListener로 등록되며 onCreate가
리턴된 후에라도 이벤트가 발생하면 언제든지 호출 될 수있다.

onTouch가 호출되었을때 outText 변수가 존재하지 않으므로,
outText의 실제값을 참조 할 수가 없는 것이다.

final을 붙이게되면 그 값은 더 이상 변경할 수 없는 상수가 되므로
onTouch를 등록하는 시점에 그 값을 분명히 전달 할 수있다.
onTouch메서드에서 참조하는 outText는 Listener가 등록될
시점의 값을 가지는 상수 객체이다.

outText 변수와 onTouch Listener 는 생성 시점과 등록시점은 같지만
존재 기간은 서로 다르다.
outText는 일개 지역변수이지만 outTouch 는 Listener로 등록되므로
사실상 전역적으로 지속된다.

한마디로,
Listener로 전달하고 싶은 지역변수는 final 로 처리해야 한다는 말이다.

[작성자] www.ybinside.com
[참고문헌] 한빛미디어, 안드로이드프로그래밍정복, 김상형저
[펌 소스] http://devbible.tistory.com/30

저작자 표시 비영리 변경 금지

'mobile' 카테고리의 다른 글

[Android] final 을 쓰는 이유  (0) 2012/03/23
안드로이드 설치 후 에러 Attribute minSdkVersion  (0) 2012/03/21
Trackback 0 Comment 0