class에 대해서 궁금합니다;;;

class에 대해서 궁금합니다;;;

QA

class에 대해서 궁금합니다;;;

본문

그누보드를 통해서 개발을 배우고 있는데요

이번에 class라는걸 봤는데 개념적인것을 많이 읽어봐도 이해가 도무지 않가더라구요

그래서 제가 자주 이용하는 그누보드를 토대로 해보면 이해가 쉬울것같아서 문의드립니다..

그누보드 함수들은 class 로 안되어있던데요..

예를들어 제가 아래소스 몇개를 남겼는데 

전부 회원에 관련된 함수지만 

1~3번재는 리스트페이지에서 쓰이고

4번째는 회원가입시페이지 / 5번째는 관리자에서 쓰이는 페이지인데요

 

만약에 아래것들을 class 로 한다면 전부하나에 클래스로 넣어서 쓰는건지..

각기 나눠야하는지?? 나누면 어떻게 나눠야하는지?? 좀 도와주실분 계실까요;;;ㅜㅜ

 

//멤버성별에 따라 아이콘 보여주기
function member_sex($mb_sex)
{
  if($mb_sex=="F") echo "<img src=/F.png width=10>";
  if($mb_sex=="M") echo "<img src=/M.png width=10>";
}
 
// 멤버의 레벨을 추출
function member_level($mb_id='')
{
  global $g4,$g5;
 
    $sql = " select mb_level from g5_member where mb_id = '".$mb_id."'";
    $row = sql_fetch($sql);
  return $row[mb_level];
     
}
 
// 멤버의 데이터추출
function member_data($mb_id='')
{
  global $g4,$g5;
 
    $sql = " select * from g5_member where mb_id = '".$mb_id."'";
    $row = sql_fetch($sql);
  return $row;
     
}
 
 
// 멤버가 회원가입시 중복된 아이디가
function member_data($mb_id='')
{
  global $g4,$g5;
 
    $sql = " select * from g5_member where mb_id = '".$mb_id."'";
    $row = sql_fetch($sql);
  return $row;
     
}
 
 
// 회원 삭제
function member_delete($mb_id)
{
    global $config;
    global $g5;
 
  ...................
 
}

이 질문에 댓글 쓰기 :

답변 3

클래스는 프로그래밍 로직 처리하는데 있어서 형태의 틀 같은 개념이고, 

클래스를 사용하려면 그 클래스를 사용해서 객체를 생성해서 사용합니다 (틀에서 뭔가를 찍어내서 사용)

예를들어 Test 라는 클래스(틀) 가 있고 변수화 해서 사용하려면

$t1 = new Test();

이런식으로 사용하는데,  여기서 $t1 은 Test 클래스 자체가 아닌 Test 클래스를 사용해 만든 객체구요, 

클래스에 대한 설명은 사실 이런 한두문장으로 설명하기 부족하고, 

그누보드에서는 클래스 사용을 거의 안하는데 lib 폴더쪽에 보시면 클래스 파일들 좀 있을거에요 

한번 보셔도 좋은데 일단 그전에 클래스 이론적으로 공부하시는게 젤 좋긴하겠죠..

말씀하신 함수들을 클래스화 해서 표현한다면 

회원 레벨쪽만 대충 해보면


class Member {
  private $level;
  function __constructor($mb_id) {
    $tmp = sql_fetch"select mb_level from g5_member where mb_id = '{$mb_id}';";
    $this->level = $tmp['level'];
  }
  
  public function getMemberLevel() {
    return $this->level;
  }
}

 

이런식으로 회원id 를 파라미터로 객체를 생성하고 

그럼 그 객체는 정의해놓은 속성과 메소드를 가지고 있고 사용이 가능한거죠 


$member = new Member('test');
//회원레벨가져오기
echo $member->getMemberLevel();

 

클래스부분을 요몇일 많이 봐서 대략 내용은 알겠는데
어떤것들을 묶어서 써야할지를 모르겠더라구요...
멤버쪽 함수를 전부 묶어야하는건지... 같은 페이지에서 사용하는걸 전부 묶어야하는건지
이런..부분이 이 해가 안가더라구요

멤버라는 클래스를 만들고 예제보여주신것 너무 감사합니다..
염치없지만 한가지만 더 여쭙고 싶습니다.ㅜㅜ
만들어주신클래스안에 제가 남긴 함수를 넣어야하면 어떤걸 넣어서 써야하죠??
전부다 넣어서 쓰는게 적절한건지... 아니면 다른거 저거랑 맞을만한함수가 어떤건지좀... 알려주실수 있을까요;;

약간 핀트를 잘못잡으신부분이 있는데 ,
애초에 클래스는 함수를 묶어서 쓰는 용도로 만드는게 아니구 ,
member 로 예를들면 member 라는 객체를 관리하는 용도로 만드는거라서

JS 쪽에 보면 Object 라는 개념이 있거든요 , 그거랑 비슷하다고 보시면되요 ㅎㅎ

지금 위에 작성해놓으신 함수들은 사실 클래스 내부에 위치해야할 함수라기보다 그냥 라이브러리 개념이거든요, 그누보드로 치면 common.lib.php 이런데 들어가야하는,
더 정확히 말하면 member.lib.php 이런 네이밍이 더 맞을거같은데

꼭 그런건 아니고요

 

함수를 쓰는건 별도로 써도 되는건  function 으로 해도 되지만

 

변수를 공통으로 할당해서 쓰는 부분은

class로 묶어 변수를 공유해 쓰기위함 입니다.

답변너무 감사합니다.. 변수를 공유해서 쓰기위함이란글이 왜 클래스를 만들어야하는지에 대한 의문에 이해가 많이 가네요~~
그럼 한가지만 더 여쭙겠습니다..
그럼 위에 함수중에 1번을 제외한 2~5개의 함수를 mb_id 가 필요한건데
쓰는페이지가 다른데 2~5를 하나의 클래스로 묵는게 맞는형태인가요??

아주 서투르게 예를 들어 설명한다면...

 

함수는 하나의 국가이고 클래스는 국가연합입니다.

예를 들어 유럽연합 소속의 국가들은 동일한 화폐를 사용하기 때문에 편한 것이 한두 가지가 아니지요.

 

사실 저도 클래스가 이러저러한 것이다... 라는 개념만 알고 있을 뿐 실전에서는 거의 안 써요.

그런데 클래스 예찬론자들이 있긴 있습니다.

 

아마도 유럽연합국가 사람들이 공동통화가 가지는 편리함을 느끼는 것과 같은 이치겠지요.

저는 편한 점이 있긴 하겠지만 굳이 한중일이 동일화폐를 써야하나? 그 정도이구요.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,162 | RSS
QA 내용 검색

회원로그인

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