티스토리 뷰
오늘 PHP로 작업하다가 일반적인 언어의 유효영역(scope)로 생각하다가 한시간을 낭비한 일이 있었다.
<?php
$apiHandler = getApiHandler();
switch(method)
{
case 1: doFunction1(); break;
case 2: doFunction2(); break;
}
function doFunction2()
{
$apiHandler->call("foo");
}
?>
: 위와 같이 썼는데, 당연히 전역변수로 선언한 $apiHandler가 함수 내에서 $apiHandler 이렇게 바로 접근하면 될 줄 알았는데, object가 undefined라고 자꾸 나와서 왜그런가 했더니 로컬 함수 영역은 글로벌과는 별로도 따진다는 것이다. 만약에 함수 밖에 선언한 전역 변수를 사용하고자 한다면,
function doFunction1()
{
global $apiHandler;
$apiHandler->call("foo");
}
: 이렇게 global로 정의를 해주면 전역변수로서 $apiHandler를 접근하게 된다. 이외에서 $GLOBALS 를 사용하는 방법도 있다.
function doFunction1()
{
$GLOBALS['apiHandler']->call("foo");
}
: 함수로 좀 나눈다고 시간 낭비를 하긴했으나, PHP에 대해서 조금은 더 공부를 한 것 같다. 경험하지 않으면 썩 와닿지 않는 부분을 제대로 경험했다.
끝.
- Total
- Today
- Yesterday
- 강좌
- HTML5
- Writing
- TIP
- GX-10
- c++
- 안드로이드
- google app engine
- HTML5 튜토리얼
- 서울
- 팁
- gre
- Android
- 뽐뿌
- 삼식이
- 샷
- lecture
- 속깊은 자바스크립트 강좌
- Python
- ny-school
- 자바스크립트
- 탐론 17-50
- 안드로이드 앱 개발 기초
- mini project
- php
- K100D
- 사진
- gae
- java
- Javascript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |