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 클래스 내부에서만 접근 가능
한림대학교 웹데이터베이스 - 이윤환
12. 쿠키(COOKIE)
필요한 정보를 클라이언트 측에 보관하는 방법
• 쿠키는 웹 페이지로의 연속되는 방문 사이에 또
는 웹 사이트 내에서 다른 페이지들간의 방문 사
이에 상태(state)를 유지하는 문제를 해결하기 위
해 개발되었다.
• 쿠키는 웹 서버들이 클라이언트의 하드 드라이
브 상에 데이터를 저장하고 검색한다.
• “name = value” 형태의 간단한 텍스트 문자열이
며 클라이언트쪽에 지속적으로 저장된다.
한림대학교 웹데이터베이스 - 이윤환
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 ?>
한림대학교 웹데이터베이스 - 이윤환