[입문자용 강좌] 상수?

· 2007-02-10 (토) 11:59:31 · 3469 · 20
[상수]
# 본내용은 스킨제작을 목적으로 하는 분들을 위한 입문자용 기본 강좌입니다.
# 입문자가 쉽게 php를 느낄수 있도록 되도록 간추려서 쉽게 구성한 강좌입니다.
# 입문자가 아니면 보실 필요가 없습니다.
# 강좌의 순서는 입문자가 쉽게 와닿을수 있도록 임의로 조정했습니다.
# 강좌는 누구나 읽고 사용할수 있지만, 다른 책의 내용으로 포함될수 없습니다.


1. '상수'란

상수란 변하지 않는 값 이란 뜻입니다.
한번 값이 정해 지면 하나의 프로그램 흐름 전체에서,
또는 하나의 페이지 전체에서 변할수 없는 값입니다.
이것은 이전에 설명한 '변수' 와는 다릅니다.


2. 상수를 정의하는 방법

define('상수명', '상수값');
예 > define('_G4_ALPHAUPPER_', 1);


3. 변수와의 차이점

상수는 사용할때 변수와는 다르게 앞에 $표시가 없습니다.
상수를 정의할때는 변수와 같이 = 으로 값을 대입시킬수 없고, 반듯이 위에서 설명한
define() 함수를 통해서만 값을 대입할수가 있습니다.

이미 정의된 상수를 다시 define() 함수를 통해 정의하게 되면, 에러가 발생합니다.
나중에 다시 설명하겠지만,
변수는 사용영역에 제한이 있지만
상수는 어느 곳에서나 항상 제한 없이 사용할수 있습니다.


4. 정의된 상수의 확인

해당 상수명의 상수가 이전에 정의되었는지 확인 할때에는 다음의 함수를 사용합니다.

defined('상수명‘)

예 > if (!defined('_GNUBOARD_')) exit;
즉, 이전에 _GNUBOARD_ 라는 상수명으로 상수가 정의되어 있지 않으면
프로그램을 여기서 종료시켜라 라는 뜻입니다.

defined()라는 함수는 상수의 정의 여부만을 판단하지 상수값을 돌려주는 것은 아닙니다.
이미 정의되어 있는 상수라면 true, 그렇지 않으면 false를 돌려줍니다.


5. 완전히 이해되지 않더라도 다음 단계로 넘어갑니다.

앞으로 다룰 내용들에서 차차 개념이 잡히게 됩니다.<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:12:10 PHP & HTML에서 이동 됨]</div>

첨부파일

상수.hwp (32 KB) 38회 2007-02-12 11:30
|

댓글 20개

아... 그렇구나... 그런데... 한번 상수로 정의하면 session이 유지하는 동안 global하게 여기저기의 php 프로그램에서 쓸 수 있나요? local, global 뭐 그런거는 php에는 없나요?
네 상수는 한번 정의 되고 나면

어디서든 항상 같은 값으로 사용될수 있습니다.

상수는 변수가 아니기 때문에

전역화 하지 않아도 지역에 영향을 받지 않습니다.
그렇군요. php의 상수는 다른 언어와는 조금 다르네요... 다른 언어는 전역화 시키는
과정과 서로 넘겨주는 과정이 딥따 복잡했는데... ㅎㅎ... 설명 감솨 합니다.
저는 처음 배운 언어가 apple basic이라... ㅋㅋ
그누보드의 예를 들자면

모든 페이지에서 항상 인클루드 되는 common.php라는 파일이 있습니다.

또 그속을 보면

역시 상수를 정의한 파일인 /lib/constant.php를 인클루드 하고 있는 것을 볼수 있습니다.

include_once("$g4[path]/lib/constant.php");

이런식으로.....

그러니까 다시 말하면

해당 파일에서 정의된 상수들은

common.php가 인클루드된 모든 파일에서는

아무런 제약없이 항상 같은 값으로 사용할수 있습니다.

상수는 변수가 아니므로, 함수내에서나 클래스 내에서나 전역화 하는 과정은

필요없습니다.

상수 자체가 전역입니다.
2007-02-10 (토) 12:03:25
강좌 감사하게 잘보고 있습니다. ^^
네 감사합니다.

사실 이런것도 보는 사람이 있고,

관심을 보이는 사람이 있어야 할맛 납니다.

부족한 강좌지만 계속 관심 가져 주세요
2007-02-10 (토) 12:06:50
저도 한자 한자 정독 하고 있습니다.^^

감사합니다.
네 감사합니다.
2007-02-10 (토) 12:32:22
저도 몇번씩 되풀이 읽고 있답니다.

그러니깐 ... ?? define() <=상수를 정의하는 방법이 이것이라면...


include_once("$g4[path]/lib/constant.php"); 여기에서


include_once <= 이것이 상수이고
("$g4[path]/lib/constant.php"); <=이것이 상수값인가요..??
아네 인클루드에 대해서는 나중에 다룰것인데요

그것은 상수나 상수값이 아니구요

해당 파일을 현재 파일에 불러오는 과정이구요

그 파일을 에디터로 열어보면

몇개의 상수가 정의 되어있음을 보실수 있습니다.

그 파일의 내용이 그누보드에서 기본적으로 사용하는 상수라는 뜻입니다.
2007-02-10 (토) 13:10:04
유창화님 강좌가 진행되는 동안 좀 귀찮게 질문을 하더라도 이해해 주시기를 부탁드립니다.

<?
if (!defined('_GNUBOARD_')) exit;

// 현재 접속자수 출력
function connect($skin_dir="")
{
global $config, $g4;

// 회원, 방문객 카운트
$sql = " select sum(IF(mb_id<>'',1,0)) as mb_cnt, count(*) as total_cnt from $g4[login_table] where mb_id <> '$config[cf_admin]' ";
$row = sql_fetch($sql); ---생략--------

위의 구문에서 처음에 있는
if (!defined('_GNUBOARD_')) exit; 이부분에서 defined <=이것이 상수이고
('_GNUBOARD_') <=이것이 상수값인가요..??

define() 함수를 통해서만 값을 대입할수가 있습니다. <=강의 내용중

상수를 정의 할 때는 항상 defined라고 항상 써야하나요..??

차분이 강의 진행을 보다보면 나중에 다 설명하시겠지만 중간중간 질문 좀 드리겠습니다.
완전 초보라 미리 양해 좀 구해봅니다. ~..~*
네에
질문 많이 하는 사람이 공부 잘하는 사람입니다.

지금 위에 보면 알겟지만

함수명이 다르죠?

제가 위에서 설명한 함수의 정의 할때 쓰는 함수는

define()

입니다.

defined()함수는 앞으로 차차 설명하겠지만

해당 이름의 상수가 정의 되어있는가를 알아보는 함수입니다.

정의되어 있으면 참을 돌려주고

정의되어 있지 않으면 거짓을 돌려줍니다.

위 예제구문에서는

_GNUBOARD_ 라는 상수가 정의 되어 있는가 를 물어봐서

정의 되어있지 않으면

정상적인 사용이아니니까 그만 봐라.....

이런 구문입니다.

상수를 정의할땐 항상 define() 를 사용해야 하구요

상수가 정의 되었는지 확인할때는 defined() 를 사용합니다.
그리고 첨언하자면

그누보드는 모든 페이지에서 항상 common.php를 인클루드 하는데요

여기서보면 또 항상 config.php를 인클루드 합니다.

그 파일을 열어보면

젤 상단에

// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
define("_GNUBOARD_", TRUE);

요런 부분이 보일것입니다.

이것이 상수를 정의하는 부분이며

_GNUBOARD_ 가 상수명이고 true 가 상수 값입니다.
2007-02-10 (토) 13:27:09
네~
자세한 설명 감사드립니다. 앞으로 신세 좀 지겠습니다.
예전에 제가 배울때 생각이나네요

전 30살에 재취업학원에서 첨 컴퓨터와 php를 접했는데요?

6개월 과정이었는데

시작일땐 컴맹이었는데

줄기차게 물어보고 직접 해본 탓에 6개월 지나선

수료생중 상위의 실력을 갖게 되었습니다.

그리고 바로 취업도 하고 공개보드를 발표하기도 하고요......

많이 물어보고, 또 직접 많이 해보면 금방 늘고 그렇습니다.

하지만, 제가 항상 잘 대답해 줄수는 없다는것은 염두에 두시기 바랍니다.
2007-02-10 (토) 13:37:57
네~~
저도 나름대로 열심히 따라해 보겠습니다.
꼭 익히고 넘어가야 할 부분이 있다면
숙제 같은 것도 간혹 주시고 그러세요....ㅎㅎㅎ
위 설명으로는 좀 애매했는데.. 지식충전님의 질문과 유창화님의 답변을 보니 이해가 가고 있습니다.
대학때 교수가 이리갈키줬으면 A+은 따논 당상이었을텐데 말입니다. ㅠㅁㅠ
제가 대학으로 갈까요?

근데 오라는 사람은 없어요.

ㅎㅎ
홀.. 이런 식으로 php강좌 메뉴가 하나 잇어도 좋을 듯 하네요...;;
좋아요
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

8,188건
+
제목 글쓴이 날짜 조회
07-07-16 조회 3,055
07-07-06 조회 2,915
07-07-06 조회 3,377
07-06-23 조회 3,203
07-06-16 조회 2,686
07-05-20 조회 4,202
07-05-09 조회 3,374
07-05-09 조회 6,021
07-05-04 조회 2,600
07-04-30 조회 9,728
07-04-27 조회 4,253
07-04-26 조회 3,368
07-04-25 조회 5,154
07-04-18 조회 7,704
07-04-13 조회 3,031
07-04-12 조회 6,546
07-04-12 조회 4,948
07-04-12 조회 3,268
07-04-11 조회 5,650
07-04-05 조회 6,299
07-03-24 조회 4,347
07-03-20 조회 3,656
07-03-18 조회 3,899
07-03-18 조회 4,685
07-03-17 조회 4,170
07-03-16 조회 4,078
07-03-15 조회 5,217
07-03-13 조회 5,311
07-03-13 조회 3,514
07-03-08 조회 4,438
07-03-08 조회 3,912
07-03-08 조회 3,225
07-03-08 조회 4,091
07-03-05 조회 4,321
07-03-04 조회 2,852
07-03-01 조회 5,888
07-02-28 조회 3,174
07-02-27 조회 4,338
07-02-26 조회 3,249
07-02-26 조회 2,946
07-02-23 조회 3,597
07-02-23 조회 3,565
07-02-22 조회 3,949
07-02-22 조회 3,743
07-02-19 조회 3,763
07-02-17 조회 4,790
07-02-14 조회 8,095
07-02-12 조회 3,858
07-02-10 조회 3,470
07-02-02 조회 3,700
07-01-31 조회 3,365
07-01-29 조회 3,212
07-01-25 조회 4,985
07-01-21 조회 3,161
07-01-19 조회 2,965
06-12-15 조회 3,954
06-12-15 조회 4,362
06-12-15 조회 2,857
06-12-15 조회 4,410
06-12-15 조회 3,276
06-12-15 조회 3,993
06-12-15 조회 2,959
06-12-15 조회 2,674
06-12-15 조회 4,554
06-12-15 조회 3,108
06-12-15 조회 3,178
06-12-07 조회 4,629
06-12-07 조회 3,922
06-12-04 조회 4,531
06-11-27 조회 3,618
06-11-21 조회 3,927
06-11-15 조회 3,357
06-11-04 조회 3,255
06-10-29 조회 3,908
06-10-13 조회 3,769
06-10-13 조회 4,138
06-10-13 조회 4,087
06-10-12 조회 5,290
06-10-12 조회 4,213
06-10-04 조회 3,697
06-10-02 조회 4,484
06-09-29 조회 2,979
06-09-26 조회 3,315
06-09-26 조회 3,569
06-09-26 조회 3,209
06-09-26 조회 3,369
06-09-26 조회 4,268
06-09-25 조회 4,569
06-09-22 조회 4,882
06-09-22 조회 3,465
06-09-21 조회 4,203
06-09-21 조회 4,193
06-09-21 조회 3,474
06-09-21 조회 5,137
06-09-21 조회 3,639
06-09-21 조회 3,402
06-09-20 조회 2,936
06-09-15 조회 3,073
06-09-13 조회 3,374
06-09-11 조회 3,194