[입문자용 강좌] 상수? > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

[입문자용 강좌] 상수? 정보

JavaScript [입문자용 강좌] 상수?

첨부파일

상수.hwp (32.0K) 38회 다운로드 2007-02-12 11:30:38

본문

[상수]
# 본내용은 스킨제작을 목적으로 하는 분들을 위한 입문자용 기본 강좌입니다.
# 입문자가 쉽게 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>
추천
1

댓글 20개

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

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

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

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

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

또 그속을 보면

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

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

이런식으로.....

그러니까 다시 말하면

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

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

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

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

필요없습니다.

상수 자체가 전역입니다.
네 감사합니다.

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

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

부족한 강좌지만 계속 관심 가져 주세요
저도 몇번씩 되풀이 읽고 있답니다.

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


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


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

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

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

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

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

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

<?
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 가 상수 값입니다.
예전에 제가 배울때 생각이나네요

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

6개월 과정이었는데

시작일땐 컴맹이었는데

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

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

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

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

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

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT