
PHP ๊ฐ์
>PHP - ์ค๊ธ
๐ PHP ์ค๊ธ - 5์ฃผ์ฐจ: PHP ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (OOP) ๊ธฐ์ด - 01 ํด๋์ค, ๊ฐ์ฒด, ์์ฑ, ๋ฉ์๋
![]() |
ํ์ | 10.0 | ๋ผ์ด์ผ์ค | free |
---|---|---|---|---|
์ฌ์ฉ์ํ์ | 10.0 | ์ด์์ฒด์ | ||
๋ค์ด๋ก๋ | 1 | ํ์ผํฌ๊ธฐ | 0 | |
์ ์์ฌ | LUZENSOFT | ๋ฑ๋ก์ผ | 2025-07-28 10:55:49 | |
์กฐํ์ | 2 |
๐ PHP ์ค๊ธ - 5์ฃผ์ฐจ: PHP ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (OOP) ๊ธฐ์ด - 01 ํด๋์ค, ๊ฐ์ฒด, ์์ฑ, ๋ฉ์๋
#PHP ์ค๊ธ 5์ฃผ์ฐจ์์๋ #๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (OOP, Object-Oriented Programming)์ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ์ ๋ค๋ฃน๋๋ค. #OOP๋ ์ฝ๋๋ฅผ ๋ณด๋ค ์ฒด๊ณ์ ์ด๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ฃผ๋ ๊ฐ๋ ฅํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ด์ฃ . ์ด๋ฒ ์๊ฐ์๋ OOP์ ํต์ฌ ๊ตฌ์ฑ ์์์ธ #ํด๋์ค, #๊ฐ์ฒด, #์์ฑ, ๊ทธ๋ฆฌ๊ณ #๋ฉ์๋์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
1. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (OOP) ์ด๋?
#๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ก๊ทธ๋จ์ '๊ฐ์ฒด(Object)'๋ผ๋ ๋จ์๋ก ๊ตฌ์ฑํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ๋๋ค. ๊ฐ๊ฐ์ #๊ฐ์ฒด๋ ๋ฐ์ดํฐ(์์ฑ)์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๊ธฐ๋ฅ(๋ฉ์๋)์ ๋ฌถ์ด์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ํ์ค ์ธ๊ณ์ ์ฌ๋ฌผ์ด๋ ๊ฐ๋ ์ ํ๋ก๊ทธ๋จ ๋ด์์ ๊ฐ์ฒด๋ก ํํํจ์ผ๋ก์จ, ์ฝ๋์ #์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ณ ๋ณต์กํ ์์คํ ์ ๋ณด๋ค ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋๋ก ๋์ต๋๋ค.
OOP์ ์ฃผ์ ํน์ง์ผ๋ก๋ #์บก์ํ(Encapsulation), #์์(Inheritance), #๋คํ์ฑ(Polymorphism) ๋ฑ์ด ์์ผ๋ฉฐ, ์ด๋ฒ ์ฃผ์ฐจ์์๋ OOP์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ์ ์ง์คํ ๊ฒ์ ๋๋ค.
2. ํด๋์ค (Class): ๊ฐ์ฒด์ ์ค๊ณ๋
#ํด๋์ค๋ ํน์ ์ข ๋ฅ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ค๊ณ๋ ๋๋ ํ์ด๋ผ๊ณ ์๊ฐํ ์ ์์ต๋๋ค. ํด๋์ค ์์ฒด๋ ์ค์ฒด๊ฐ ์๋๋ฉฐ, ํด๋์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง #๊ฐ์ฒด๊ฐ ์ค์ ๋ก ํ๋ก๊ทธ๋จ์์ ๋์ํฉ๋๋ค.
ํด๋์ค ๋ด์๋ ํด๋น ๊ฐ์ฒด๊ฐ ๊ฐ์ง **#์์ฑ(Properties)**๊ณผ ์ํํ ์ ์๋ **#๋ฉ์๋(Methods)**๋ฅผ ์ ์ํฉ๋๋ค.
ํด๋์ค ์ ์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ:
PHP์์ ํด๋์ค๋ฅผ ์ ์ํ๊ธฐ ์ํด์๋ class
ํค์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
3. ๊ฐ์ฒด (Object): ํด๋์ค์ ์ค์ฒด
#๊ฐ์ฒด๋ ํด๋์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋ ์ค์ง์ ์ธ ๊ฐ์ฒด(Instance)์ ๋๋ค. ํ๋์ ํด๋์ค๋ก๋ถํฐ ์ฌ๋ฌ ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์์ผ๋ฉฐ, ๊ฐ ๊ฐ์ฒด๋ ํด๋์ค์์ ์ ์๋ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์์ ๋ง์ ๊ฐ์ผ๋ก ๊ฐ์ง๋๋ค.
๊ฐ์ฒด ์์ฑ ๋ฐฉ๋ฒ:
new
ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค.
4. ์์ฑ (Properties): ๊ฐ์ฒด์ ๋ฐ์ดํฐ
#์์ฑ์ ํด๋์ค ๋ด์์ ์ ์๋๋ ๋ณ์๋ก์, ๊ฐ์ฒด์ ์ํ๋ ํน์ง์ ๋ํ๋ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ๊ฐ ๊ฐ์ฒด๋ ์์ ๋ง์ ์์ฑ ๊ฐ์ ๊ฐ์ง ์ ์์ต๋๋ค.
์์ฑ ์ ์:
ํด๋์ค ๋ด์์ ๋ณ์๋ฅผ ์ ์ธํ๋ ๋ฐฉ์์ผ๋ก ์์ฑ์ ์ ์ํฉ๋๋ค. ์ ๊ทผ ์ ์ด์(public
, protected
, private
)๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ์ ์ ๊ทผ ๋ฒ์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ฒ ๊ฐ์์์๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ public
์ ๊ทผ ์ ์ด์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
5. ๋ฉ์๋ (Methods): ๊ฐ์ฒด์ ํ๋
#๋ฉ์๋๋ ํด๋์ค ๋ด์์ ์ ์๋๋ ํจ์๋ก์, ๊ฐ์ฒด๊ฐ ์ํํ ์ ์๋ ๋์์ด๋ ๊ธฐ๋ฅ์ ์ ์ํฉ๋๋ค. ๋ฉ์๋๋ ๊ฐ์ฒด์ ์์ฑ ๊ฐ์ ๋ณ๊ฒฝํ๊ฑฐ๋, ํน์ ์์ ์ ์ํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.
๋ฉ์๋ ์ ์:
ํด๋์ค ๋ด์์ ํจ์๋ฅผ ์ ์ํ๋ ๋ฐฉ์๊ณผ ๋์ผํฉ๋๋ค. ๋ฉ์๋ ๋ํ ์ ๊ทผ ์ ์ด์๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผ ๋ฒ์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
6. ํด๋์ค, ๊ฐ์ฒด, ์์ฑ, ๋ฉ์๋ ์์ ์ฝ๋
์ด์ ๊ฐ๋จํ ์์ ์ฝ๋๋ฅผ ํตํด #ํด๋์ค, #๊ฐ์ฒด, #์์ฑ, #๋ฉ์๋๊ฐ ์ค์ ๋ก ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
<<
// ์์ฑ์: ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ์๋์ผ๋ก ํธ์ถ๋๋ ๋ฉ์๋
public function __construct($name, $breed) {
$this->name = $name;
$this->breed = $breed;
}
// ๋ฉ์๋
public function bark() {
echo $this->name . "์ด(๊ฐ) ๋ฉ๋ฉ ์ง์ต๋๋ค.n";
}
public function introduce() {
echo "์ ์ด๋ฆ์ " . $this->name . ์ด๊ณ , ํ์ข
์ " . $this->breed . "์
๋๋ค.n";
}
}// ๊ฐ์ฒด ์์ฑ
$myDog = new Dog("ํดํผ", "๊ณจ๋ ๋ฆฌํธ๋ฆฌ๋ฒ");
$yourDog = new Dog("์ฝ์ฝ", "ํธ๋ค");// ๊ฐ์ฒด์ ์์ฑ์ ์ ๊ทผ ๋ฐ ๊ฐ ์ถ๋ ฅ
echo "๋ด ๊ฐ์์ง ์ด๋ฆ: " . $myDog->name . "n";
echo "๋ค ๊ฐ์์ง ํ์ข
: " . $yourDog->breed . "n";echo "n";// ๊ฐ์ฒด์ ๋ฉ์๋ ํธ์ถ
$myDog->bark();
$yourDog->introduce();
?>
์ฝ๋ ์ค๋ช :
class Dog { ... }
:Dog
์ด๋ผ๋ ์ด๋ฆ์ ํด๋์ค๋ฅผ ์ ์ํฉ๋๋ค.public $name;
,public $breed;
:name
๊ณผbreed
๋ผ๋ ๋ ๊ฐ์ public ์์ฑ์ ์ ์ํฉ๋๋ค.public function __construct($name, $breed) { ... }
: #์์ฑ์ ๋ฉ์๋์ ๋๋ค.new Dog()
์ ๊ฐ์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์๋์ผ๋ก ํธ์ถ๋์ด ๊ฐ์ฒด์ ์ด๊ธฐ ์ํ๋ฅผ ์ค์ ํฉ๋๋ค.$this
ํค์๋๋ ํ์ฌ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.public function bark() { ... }
:bark
๋ผ๋ ๋ฉ์๋๋ฅผ ์ ์ํฉ๋๋ค. ์ด ๋ฉ์๋๋ ๊ฐ์์ง๊ฐ ์ง๋ ์๋ฆฌ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.$this->name
์ ํตํด ํ์ฌ ๊ฐ์ฒด์name
์์ฑ์ ์ ๊ทผํฉ๋๋ค.public function introduce() { ... }
:introduce
๋ผ๋ ๋ฉ์๋๋ฅผ ์ ์ํฉ๋๋ค. ์ด ๋ฉ์๋๋ ๊ฐ์์ง์ ์ด๋ฆ๊ณผ ํ์ข ์ ์๊ฐํฉ๋๋ค.$myDog = new Dog("ํดํผ", "๊ณจ๋ ๋ฆฌํธ๋ฆฌ๋ฒ");
:Dog
ํด๋์ค์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ$myDog
๋ณ์์ ํ ๋นํฉ๋๋ค. ์์ฑ์์ ์ธ์๋ก ์ด๋ฆ๊ณผ ํ์ข ์ ์ ๋ฌํฉ๋๋ค.$yourDog = new Dog("์ฝ์ฝ", "ํธ๋ค");
: ๋ ๋ค๋ฅธDog
ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ$yourDog
๋ณ์์ ํ ๋นํฉ๋๋ค.echo "๋ด ๊ฐ์์ง ์ด๋ฆ: " . $myDog->name . "n";
: ๊ฐ์ฒด์ ์์ฑ์ ์ ๊ทผํ ๋๋ ๊ฐ์ฒด ๋ณ์ ๋ค์->
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๊ณ ์์ฑ ์ด๋ฆ์ ์ ์ต๋๋ค.$myDog->bark();
: ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋๋ ๊ฐ์ฒด ๋ณ์ ๋ค์->
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๊ณ ๋ฉ์๋ ์ด๋ฆ์ ์ ์ต๋๋ค.
์ด ์์๋ฅผ ํตํด ํด๋์ค๊ฐ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ํ์ ์ ๊ณตํ๊ณ , ๊ฐ์ฒด๋ ํด๋น ํ์ ๋ฐ๋ผ ์์ฑ ๊ฐ์ ๊ฐ์ง๊ณ ์ ์๋ ํ๋(๋ฉ์๋)์ ์ํํ ์ ์๋ค๋ ๊ฒ์ ์ดํดํ ์ ์์ต๋๋ค.
๊นจ๋ํ IP๋ง ๋ชจ์๋์ ๊ณณ, VPN PC, ๋ชจ๋ฐ์ผ ์ง์์ผ๋ก ์ด๋ค ๊ธฐ๊ธฐ์์๋ OK!
https://xn--299ao67b9qbmsf04c.net/