일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- php file upload
- active reconnaissance
- Cryptography
- overthewire
- sql injection
- Recon
- BANDiT
- FTZ
- Server Side Request Forgery
- php 파일 업로드하기
- War Game
- Reconnaissance
- tryhackme
- THM
- php login page
- privilege escalation
- 파일 업로드 취약점
- active recon
- php
- Leviathan
- over the wire
- php To Do List
- Cookie
- php 로그인 페이지 만들기
- file upload
- Authentication
- OS Command Injection
- SQLi
- access control
- ssrf
- Today
- Total
R's Hacking Daily Log
php 객체 지향 프로그램 (1) 본문
Step 1 :: 객체 지향 프로그래밍
객체 지향 프로그래밍이란 단순한 문법이나 코딩 스타일이 아닌 하나의 패러다임이라 할 수 있다.
객체가 고유의 기능을 수행하고 서로 간의 상호 작용도 하면서
프로그램의 전반적인 기능이 구축되는 걸, 객체 지향 프로그램이라 할 수 있다.
객체 지향 프로그래밍을 하기 위해서는 실재하는 대상을 소프트웨어 상으로 옮기는 과정,
추상화가 필요하다.
** 추상화란
객체의 핵심점인 특징, 개념, 기능을 추출하여 표현하는 것을 말한다.
예를 들어 코끼리를 추상화한다면 "다리가 4개 있고 몸무게가 많이 나가며 코가 길다"라고 할 수 있다.
Step 2 :: 클래스와 객체 [ Class & Object ]
그렇다면 객체란 무엇이며 코드 상에서 어떻게 만들어낼 수 있을까?
객체란 주체가 인식할 수 있는 어떠한 대상을 일컫는 말로
PHP에서 객체란 클래스로 만들어낸 인스턴스라고도 할 수 있다.
car A : white, 9인승, 휘발유
car B : Grey, 4인승, 전기차
car C : black, 4인승, 휘발유
서로 다른 자동차 3대가 있다고 상상해보자. 색상이나 최대 인승 등의 속성은 차이가 날지라도
A, B, C는 바퀴가 4개 달린 자동차라는 점은 공통적이다.
그렇다면 추상화의 개념으로 다가갔을 때
"자동차의 공통적인 측면을 나타낼 틀이 있고 그 틀에 부품을 조금씩 다르게 넣어 A, B, C가 나왔구나!"라고
생각할 수 있다.
! 이때 사용하는 틀이 클래스이고 클래스로 만들어낸 결과물이 객체(인스턴스)인 셈이다.
이해를 돕기 위해 코드 상으로 표현해보면
<?php
Class Car {
public $color;
public $maxSeat;
public $oil;
}
$a = new Car();
$a->color = 'white';
$a->maxSeat = 9;
$a->oil = '휘발유';
$b = new Car();
$b->color = 'black';
$b->maxSeat = 4;
$b->oil = '경유'
1) Car라는 클래스로 $a라는 인스턴스를 만들어내면 [ $a = new Car() ]
2) $a는 color, maxSeat, oil이라는 특성을 달리 가질 수 있는 하나의 객체가 된다. [ ex) $a->color = 'white' ]
이때 자동차 A는 흰 색상에 최대 9명까지 탑승이 가능한, 휘발유를 사용하는 자동차로 만들어진다.
3) $b라는 자동차도 하나 만들어서 a와는 다른 특성값을 부여해준다.
이렇게 되면 Car라는 공통적인 틀로 자동차를 만들지만 각각의 특성을 달리 부여함으로써 서로 다른 객체를 만들어낼 수 있다.
Step 3 :: Property & Method
위에서 살펴보았듯이 객체는 클래스로 만들어진다.
그렇다보니 클래스에는 객체의 공통적인 속성이나 기능을 정의할 수 있는데
클래스가 가지는 속성은 변수로 나타내며 proterty 또는 멤버 변수라고 부른다.
클래스가 가지는 기능은 함수로 정의되며 Method 또는 멤버 함수라고 부른다.
따져보면 일반적인 변수 & 함수와 똑같지만 클래스 내부에 있다는 이유로 이름이 달라졌다고
생각하면 된다.
<?php
Class Car {
public $color = 'white';
function turnOn() {
echo "시동을 건다";
}
}
$car = new Car();
echo $car->color;
$car->turnOn();
Class keyword를 사용해 클래스를 생성할 수 있다.
Car라는 클래스를 만드는 데 color라는 property와 turnOn이라는 Method를 가지고 있는 걸 확인할 수 있다.
클래스로 만들어낸 객체 car는 Car 클래스로 만들어냈기 때문에
Car 클래스에 정의된 변수와 함수를 가지고 있다.
property & Method에 접근하기 위해서는 객체에서 화살표 기호로 빠져나와
접근하고자 하는 변수나 함수 이름을 지정하면 된다.
코드 실행 결과를 보면 Class에서 정의한 변수와 함수를 객체 car에서도 지니고 있는 걸 확인할 수 있다.
'PHP' 카테고리의 다른 글
php 객체 지향 프로그램 (3) (0) | 2023.07.13 |
---|---|
php 객체 지향 프로그램 (2) (0) | 2023.07.12 |
php 함수 (3) (0) | 2023.07.06 |
php 함수 (2) (0) | 2023.07.05 |
php 함수 (1) (0) | 2023.07.05 |