객체 그리고,
데이터의 연결 유지

웹데이터베이스 구축 및 실습
객체 지향 프로그래밍
함수(기능) 중심 vs. 객체지향 프로그래밍
 • 함수 중심
    • 기능에 초점을 맞추어 순차적으로 어떤 기능들을
      수행하여야 하는지를 표현
    • 수행하여야 하는 기능들을 함수화
    • 처리 순서를 고려하여 작성해둔 함수 호출
 • 객체지향
    • 기능이 아닌 데이터에 초점
    • 객체라는 단위로 모든 처리 표현
    • 모든 사물을 속성(property)과 기능(method)을 가진
      객체로 간주

한림대학교 웹데이터베이스 - 이윤환
객체 지향 프로그래밍
클래스(Class) 키워드
 • 메소드와 속성 정의.
       사람    class Human {
                  public $Name;
        이름        public $Age;
        나이        public $Height;
  속성              public $Weight;
        키
                  public function Eat ( $foods ) {
        체중           echo “우걱우걱~ 맛있는”. $foods . “<BR>”;
       먹는다        }
  기능   걷는다        public function Walk ( $destination ) {
                     echo $destination . “까지 걸어요.<BR>”;
       말한다        }
                  public function Talk ( $words ) {
                     echo $words . “<BR>”;
                  }
                }
한림대학교 웹데이터베이스 - 이윤환
객체 지향 프로그래밍 - 속성
속성
 • 데이터
     • 표현하고자 하는 대상이 가질 수 있는 속성 값
 • (class 문 내에서)속성의 이름 지정
     • 속성 값은 메소드에 의해 변경
     • 초기값은 생성자라는 특수한 메소드에 의해 지정
 • 제한자에 의해 접근 레벨을 달리할 수 있음
     • 객체지향 프로그래밍에서는 직접 속성값을 변경하
       지 않고 메소드만 외부에 노출
     • 노출된 메소드에 의해 값 변경
     • 상속 등에서 접근 제한자를 통해 변경 가능한 범위
       지정

한림대학교 웹데이터베이스 - 이윤환
객체 지향 프로그래밍 - 메소드
생성자(Constructor)
 • class 문 내에서 사용
 • 객체 초기화
       • 일반적으로 클래스의 이름과 동일한 메소드
       • PHP5에서는 __construct()라는 이름의 메소드
       • 반드시 필요한 것이 아니므로 생략 가능

function __construct($hname) {   • $this : 현재의 클래스를 가리키는 변수
     $this->Name = $hname;         • 이를 이용하여 클래스 내의
     $this->Age = 1;                 멤버 변수나 함수에 접근 가능.
}
                                 • -> : 속성과 메소드명을 다룸
                                   • 변수의 경우 변수 앞의 “$” 기호를
                                     제외해야 함.



한림대학교 웹데이터베이스 - 이윤환
객체 지향 프로그래밍 - 메소드
소멸자(destructor)
 • 객체 소멸시 해야 하는 일 정의.
    • __destruct()라는 이름
       • 파라미터를 가지지 못함.

      function __destruct() {
               $this->Talk( “창문을 닫아 주오!”);
      }




한림대학교 웹데이터베이스 - 이윤환
객체 지향 프로그래밍 – 객체 사용
인스턴스(Instance) 생성하기
 • 클래스를 통해 사용할 객체 생성
    • new 키워드 사용
    • 전달인자는 생성자의 전달인자
     <?php
     $charles = new Human(‘철수’);
     $younghee = new Human(‘영희’, 1, 50, 3.5);
     $charles = NULL;     //철수 객체 제거
     $younghee = NULL;    //영희 객체 제거
     ?>




한림대학교 웹데이터베이스 - 이윤환
객체 지향 프로그래밍 – 객체 사용
객체의 속성과 기능 사용하기
 • “->” 사용
 • 여기서 사용된 속성과 메소드는 public

  <?php
  $charles = new Human(‘철수’, 5); //5살짜리 철수를 생성합니다.
  $charles->Talk($charles->Age);    //철수는 몇 살?
  $charles->Eat(“dinner”);         //철수야! 밥 먹자~


  //밥을 먹고 난 후 철수의 키와 몸무게가 늘었다.
  $charles->Height = 110;          // 110 cm
  $charles->Weight = 22;           // 22 Kg
  ?>


한림대학교 웹데이터베이스 - 이윤환
객체 지향 프로그래밍 – 상속
기존의 클래스의 속성과 기능을 상속받아 새로운
클래스 정의.
 • 최상위 클래스는 가장 일반적인 요소의 추상화
      • 상속의 과정은 세분화의 과정
 • extends 키워드 사용
 <?php
 class Baby Extends Human {                   // 인간 클래스 상속
         function 모유먹기 () { echo “냠냠~”; }
         function 천사와대화 () { echo “옹알~ 옹알~”; }
 }
 $재민 = new Baby(‘재민’); //아기 클래스를 이용해 재민이 객체 생성
 $재민->천사와대화();                   // 옹알~ 옹알~
 ?>


한림대학교 웹데이터베이스 - 이윤환
객체 지향 프로그래밍 – 접근제한자
클래스 내부 접근을 위한 세 가지 키워드.
 • 클래스 설계 시 자신이 설계한 클래스를 보다 안
   전하게 사용하기 위해 외부로 공개된 함수와 변
   수로만 클래스를 접근하여 사용

       제한자                 설 명

       public     외부에서 접근 가능

      protected   상속 계통에서만 접근 가능

       private    클래스 내부에서만 접근 가능



한림대학교 웹데이터베이스 - 이윤환
데이터 유지 방법


쿠키와 세션
쿠키(COOKIE)
필요한 정보를 클라이언트 측에 보관하는 방법
 • 쿠키는 웹 페이지로의 연속되는 방문 사이에 또
   는 웹 사이트 내에서 다른 페이지들간의 방문 사
   이에 상태(state)를 유지하는 문제를 해결하기 위
   해 개발되었다.
 • 쿠키는 웹 서버들이 클라이언트의 하드 드라이
   브 상에 데이터를 저장하고 검색한다.
 • “name = value” 형태의 간단한 텍스트 문자열이
   며 클라이언트쪽에 지속적으로 저장된다.



한림대학교 웹데이터베이스 - 이윤환
쿠키(COOKIE)
PHP에서 쿠키 다루기

    bool setcookie (쿠키이름, 쿠키값, 만료시간, 경로, 도메인, 보안);




                   [표6-1] setcookie 함수의 인자




한림대학교 웹데이터베이스 - 이윤환
쿠키(COOKIE)
Cookie 사용하기
 • 해당 쿠키명이 키인 $_COOKIE 연관배열
 • Example : cookie.php vs. non-cookie.php

Cookie 삭제하기
 • setcookie(“삭제할 Cookie 변수명”)
 • setcookie(“삭제할 Cookie 변수명”, “값”, time()-3600)
     • cookie 변수를 과거로 보낸다. 현재에는 유효하지 않다.


함정
 • setcookie를 사용하여 Cookie를 생성하기 전에 어떠한 데이터
   도 Client에 보내지면 안된다.

한림대학교 웹데이터베이스 - 이윤환
세션(SESSION)
세션은 쿠키와 유사하나 웹 서버에 저장됨.
 • 쿠키는 사용자의 컴퓨터에 저장되므로 사용자가 홈페이
   지에 들어오는 것은 알 수 있으나 로그아웃 하지 않고 나
   갈 경우 웹 서버에서 알 수 없음.
 • 세션은 서버 측에 존재하므로 웹 서버가 주기적으로 세
   션의 상태를 확인 가능.
    • 특정 시간 동안 웹 사이트 내에서 어떠한 이동도 발생하지 않을 경우
      사용자가 나간 것으로 간주하고 세션 삭제 가능.




                 [그림6-17] 세션의 저장

한림대학교 웹데이터베이스 - 이윤환
세션(SESSION)
세션의 제거
 • 서버의 하드디스크 용량의 문제 및 세션의 관리를 위해 제거
 • 주기적으로 관리하여 필요 없다고 느끼는 세션을 지움.
     • 기본적으로 24분을 기준으로 하여 세션 삭제

보안
 • 세션은 서버 측에 저장되므로 세션 값을 사용자가 변조할 수 없음.
      • 무작위의 숫자로 이루어진 세션 ID를 사용자에게 발급, 서버
        측에 기록함.
      • 웹 서버는 사용자의 세션 ID를 확인하여 사용자의 상태 유지.
 • 그러나 주기적으로 상태를 확인하고, 서버 측에 정보가 저장되므로
   웹 서버에 부담을 줌




한림대학교 웹데이터베이스 - 이윤환
세션(SESSION)
세션 시작하기
    • PHP에서 사용하기 위해 세션을 시작해야 함.
        • session_start()
            • 쿠키와 마찬가지로 어떤 정보도 클라이언트에 전달되기
              전에 사용
        • 세션을 시작하면 사용자에게 세션 ID가 발급됨.
            • PHPSESSID라는 이름으로 쿠키로 기록
1   <?php
2     session_start();
3   ?>




한림대학교 웹데이터베이스 - 이윤환
세션(SESSION)
세션 변수 등록하기
 • PHP 4.1 버전 이전에는 세션에 사용되는 변수를 별도로 등록.
 • 최신 버전의 PHP에서는 세션 변수를 사용.
       • $_SESSION 연관배열을 사용하여 세션 변수를 등록하고 값 저장.
       • [예제 6-7] 세션 변수 등록.

   1    <?php
   2      session_start();
   3      $_SESSION['message'] = 'Welcome to PHP world!<BR>';
   4
   5    ?>
   6    <a href="read_session.php">다음 페이지</a>




한림대학교 웹데이터베이스 - 이윤환
세션(SESSION)
세션 변수 사용하기
 • $_SESSION 배열을 사용하여 세션 변수를 사용.
      • session_id() 함수 : 현재 사용자의 세션 ID

      //read_session.php
      1 <?php
      2      session_start();
      3
      4      echo $_SESSION['message'];
      5      echo "<P>";
      6      echo "PHPSESSID=" . session_id();
      7 ?>




한림대학교 웹데이터베이스 - 이윤환

PHP에서 객체와 데이터 연결 유지

  • 1.
    객체 그리고, 데이터의 연결유지 웹데이터베이스 구축 및 실습
  • 2.
    객체 지향 프로그래밍 함수(기능)중심 vs. 객체지향 프로그래밍 • 함수 중심 • 기능에 초점을 맞추어 순차적으로 어떤 기능들을 수행하여야 하는지를 표현 • 수행하여야 하는 기능들을 함수화 • 처리 순서를 고려하여 작성해둔 함수 호출 • 객체지향 • 기능이 아닌 데이터에 초점 • 객체라는 단위로 모든 처리 표현 • 모든 사물을 속성(property)과 기능(method)을 가진 객체로 간주 한림대학교 웹데이터베이스 - 이윤환
  • 3.
    객체 지향 프로그래밍 클래스(Class)키워드 • 메소드와 속성 정의. 사람 class Human { public $Name; 이름 public $Age; 나이 public $Height; 속성 public $Weight; 키 public function Eat ( $foods ) { 체중 echo “우걱우걱~ 맛있는”. $foods . “<BR>”; 먹는다 } 기능 걷는다 public function Walk ( $destination ) { echo $destination . “까지 걸어요.<BR>”; 말한다 } public function Talk ( $words ) { echo $words . “<BR>”; } } 한림대학교 웹데이터베이스 - 이윤환
  • 4.
    객체 지향 프로그래밍- 속성 속성 • 데이터 • 표현하고자 하는 대상이 가질 수 있는 속성 값 • (class 문 내에서)속성의 이름 지정 • 속성 값은 메소드에 의해 변경 • 초기값은 생성자라는 특수한 메소드에 의해 지정 • 제한자에 의해 접근 레벨을 달리할 수 있음 • 객체지향 프로그래밍에서는 직접 속성값을 변경하 지 않고 메소드만 외부에 노출 • 노출된 메소드에 의해 값 변경 • 상속 등에서 접근 제한자를 통해 변경 가능한 범위 지정 한림대학교 웹데이터베이스 - 이윤환
  • 5.
    객체 지향 프로그래밍- 메소드 생성자(Constructor) • class 문 내에서 사용 • 객체 초기화 • 일반적으로 클래스의 이름과 동일한 메소드 • PHP5에서는 __construct()라는 이름의 메소드 • 반드시 필요한 것이 아니므로 생략 가능 function __construct($hname) { • $this : 현재의 클래스를 가리키는 변수 $this->Name = $hname; • 이를 이용하여 클래스 내의 $this->Age = 1; 멤버 변수나 함수에 접근 가능. } • -> : 속성과 메소드명을 다룸 • 변수의 경우 변수 앞의 “$” 기호를 제외해야 함. 한림대학교 웹데이터베이스 - 이윤환
  • 6.
    객체 지향 프로그래밍- 메소드 소멸자(destructor) • 객체 소멸시 해야 하는 일 정의. • __destruct()라는 이름 • 파라미터를 가지지 못함. function __destruct() { $this->Talk( “창문을 닫아 주오!”); } 한림대학교 웹데이터베이스 - 이윤환
  • 7.
    객체 지향 프로그래밍– 객체 사용 인스턴스(Instance) 생성하기 • 클래스를 통해 사용할 객체 생성 • new 키워드 사용 • 전달인자는 생성자의 전달인자 <?php $charles = new Human(‘철수’); $younghee = new Human(‘영희’, 1, 50, 3.5); $charles = NULL; //철수 객체 제거 $younghee = NULL; //영희 객체 제거 ?> 한림대학교 웹데이터베이스 - 이윤환
  • 8.
    객체 지향 프로그래밍– 객체 사용 객체의 속성과 기능 사용하기 • “->” 사용 • 여기서 사용된 속성과 메소드는 public <?php $charles = new Human(‘철수’, 5); //5살짜리 철수를 생성합니다. $charles->Talk($charles->Age); //철수는 몇 살? $charles->Eat(“dinner”); //철수야! 밥 먹자~ //밥을 먹고 난 후 철수의 키와 몸무게가 늘었다. $charles->Height = 110; // 110 cm $charles->Weight = 22; // 22 Kg ?> 한림대학교 웹데이터베이스 - 이윤환
  • 9.
    객체 지향 프로그래밍– 상속 기존의 클래스의 속성과 기능을 상속받아 새로운 클래스 정의. • 최상위 클래스는 가장 일반적인 요소의 추상화 • 상속의 과정은 세분화의 과정 • extends 키워드 사용 <?php class Baby Extends Human { // 인간 클래스 상속 function 모유먹기 () { echo “냠냠~”; } function 천사와대화 () { echo “옹알~ 옹알~”; } } $재민 = new Baby(‘재민’); //아기 클래스를 이용해 재민이 객체 생성 $재민->천사와대화(); // 옹알~ 옹알~ ?> 한림대학교 웹데이터베이스 - 이윤환
  • 10.
    객체 지향 프로그래밍– 접근제한자 클래스 내부 접근을 위한 세 가지 키워드. • 클래스 설계 시 자신이 설계한 클래스를 보다 안 전하게 사용하기 위해 외부로 공개된 함수와 변 수로만 클래스를 접근하여 사용 제한자 설 명 public 외부에서 접근 가능 protected 상속 계통에서만 접근 가능 private 클래스 내부에서만 접근 가능 한림대학교 웹데이터베이스 - 이윤환
  • 11.
  • 12.
    쿠키(COOKIE) 필요한 정보를 클라이언트측에 보관하는 방법 • 쿠키는 웹 페이지로의 연속되는 방문 사이에 또 는 웹 사이트 내에서 다른 페이지들간의 방문 사 이에 상태(state)를 유지하는 문제를 해결하기 위 해 개발되었다. • 쿠키는 웹 서버들이 클라이언트의 하드 드라이 브 상에 데이터를 저장하고 검색한다. • “name = value” 형태의 간단한 텍스트 문자열이 며 클라이언트쪽에 지속적으로 저장된다. 한림대학교 웹데이터베이스 - 이윤환
  • 13.
    쿠키(COOKIE) PHP에서 쿠키 다루기 bool setcookie (쿠키이름, 쿠키값, 만료시간, 경로, 도메인, 보안); [표6-1] setcookie 함수의 인자 한림대학교 웹데이터베이스 - 이윤환
  • 14.
    쿠키(COOKIE) Cookie 사용하기 •해당 쿠키명이 키인 $_COOKIE 연관배열 • Example : cookie.php vs. non-cookie.php Cookie 삭제하기 • setcookie(“삭제할 Cookie 변수명”) • setcookie(“삭제할 Cookie 변수명”, “값”, time()-3600) • cookie 변수를 과거로 보낸다. 현재에는 유효하지 않다. 함정 • setcookie를 사용하여 Cookie를 생성하기 전에 어떠한 데이터 도 Client에 보내지면 안된다. 한림대학교 웹데이터베이스 - 이윤환
  • 15.
    세션(SESSION) 세션은 쿠키와 유사하나웹 서버에 저장됨. • 쿠키는 사용자의 컴퓨터에 저장되므로 사용자가 홈페이 지에 들어오는 것은 알 수 있으나 로그아웃 하지 않고 나 갈 경우 웹 서버에서 알 수 없음. • 세션은 서버 측에 존재하므로 웹 서버가 주기적으로 세 션의 상태를 확인 가능. • 특정 시간 동안 웹 사이트 내에서 어떠한 이동도 발생하지 않을 경우 사용자가 나간 것으로 간주하고 세션 삭제 가능. [그림6-17] 세션의 저장 한림대학교 웹데이터베이스 - 이윤환
  • 16.
    세션(SESSION) 세션의 제거 •서버의 하드디스크 용량의 문제 및 세션의 관리를 위해 제거 • 주기적으로 관리하여 필요 없다고 느끼는 세션을 지움. • 기본적으로 24분을 기준으로 하여 세션 삭제 보안 • 세션은 서버 측에 저장되므로 세션 값을 사용자가 변조할 수 없음. • 무작위의 숫자로 이루어진 세션 ID를 사용자에게 발급, 서버 측에 기록함. • 웹 서버는 사용자의 세션 ID를 확인하여 사용자의 상태 유지. • 그러나 주기적으로 상태를 확인하고, 서버 측에 정보가 저장되므로 웹 서버에 부담을 줌 한림대학교 웹데이터베이스 - 이윤환
  • 17.
    세션(SESSION) 세션 시작하기 • PHP에서 사용하기 위해 세션을 시작해야 함. • session_start() • 쿠키와 마찬가지로 어떤 정보도 클라이언트에 전달되기 전에 사용 • 세션을 시작하면 사용자에게 세션 ID가 발급됨. • PHPSESSID라는 이름으로 쿠키로 기록 1 <?php 2 session_start(); 3 ?> 한림대학교 웹데이터베이스 - 이윤환
  • 18.
    세션(SESSION) 세션 변수 등록하기 • PHP 4.1 버전 이전에는 세션에 사용되는 변수를 별도로 등록. • 최신 버전의 PHP에서는 세션 변수를 사용. • $_SESSION 연관배열을 사용하여 세션 변수를 등록하고 값 저장. • [예제 6-7] 세션 변수 등록. 1 <?php 2 session_start(); 3 $_SESSION['message'] = 'Welcome to PHP world!<BR>'; 4 5 ?> 6 <a href="read_session.php">다음 페이지</a> 한림대학교 웹데이터베이스 - 이윤환
  • 19.
    세션(SESSION) 세션 변수 사용하기 • $_SESSION 배열을 사용하여 세션 변수를 사용. • session_id() 함수 : 현재 사용자의 세션 ID //read_session.php 1 <?php 2 session_start(); 3 4 echo $_SESSION['message']; 5 echo "<P>"; 6 echo "PHPSESSID=" . session_id(); 7 ?> 한림대학교 웹데이터베이스 - 이윤환