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 관련 한글 정리 문서
'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 |
http://shichuan.github.com/javascript-patterns/
'Script' 카테고리의 다른 글
| js pattern (0) | 2012/04/02 |
|---|---|
| URL 을 주무를 일이 많은 작업을 한다면! URI.js (0) | 2012/03/19 |
| 오페라에서 계속 정리중인 자바스크립트 최적화 문서 (0) | 2011/12/13 |
| 재미난 자바스크립트 샘플들 (0) | 2011/12/13 |
| 자바스크립트에서 HTTP GET 파라미터 값 가져오기 (0) | 2011/12/06 |
| jquery 크로스도메인 data 가져오기 문제 해결 (0) | 2011/12/06 |
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 |

Prev
Rss Feed