๋ฃจ์  ์†Œํ”„ํŠธ ๋กœ๊ณ 

216.73.216.3 TODAY : 46

PHP ์˜จ๋ผ์ธ ๊ฐ•์˜

 > 

PHP - ์ค‘๊ธ‰

๐Ÿ“š PHP ์ค‘๊ธ‰ - 5์ฃผ์ฐจ: PHP ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (OOP) ๊ธฐ์ดˆ - 03 ์บก์Аํ™” (public, private, protected)

๐Ÿ“š PHP ์ค‘๊ธ‰ - 5์ฃผ์ฐจ: PHP ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (OOP) ๊ธฐ์ดˆ - 03 ์บก์Аํ™” (public, private, protected)
ํ‰์  10.0 ๋ผ์ด์„ผ์Šค free
์‚ฌ์šฉ์žํ‰์  10.0 ์šด์˜์ฒด์ œ
๋‹ค์šด๋กœ๋“œ 1 ํŒŒ์ผํฌ๊ธฐ 0
์ œ์ž‘์‚ฌ LUZENSOFT ๋“ฑ๋ก์ผ 2025-07-30 12:07:16
์กฐํšŒ์ˆ˜ 3
- ์„ค๋ช…

๐Ÿ“š PHP ์ค‘๊ธ‰ - 5์ฃผ์ฐจ: PHP ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (OOP) ๊ธฐ์ดˆ - 03 ์บก์Аํ™” (public, private, protected)


uploadImage



#PHP #๊ฐ์ฒด_์ง€ํ–ฅ_ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP)์—์„œ #์บก์Аํ™”๋Š” ํด๋ž˜์Šค ๋‚ด๋ถ€์˜ #๋ฐ์ดํ„ฐ(์†์„ฑ)์™€ #๋ฉ”์„œ๋“œ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๊ณ , ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์ง์ ‘์ ์ธ ์ ‘๊ทผ์„ ์ œํ•œํ•˜์—ฌ #๊ฐ์ฒด์˜ #๋ฌด๊ฒฐ์„ฑ์„ ๋ณดํ˜ธํ•˜๋Š” ์ค‘์š”ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ์˜ #์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ #์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PHP์—์„œ๋Š” ์ ‘๊ทผ ์ œ์–ด์ž #public, #private, #protected๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์บก์Аํ™”๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.







์ ‘๊ทผ ์ œ์–ด์ž (Access Modifiers) ๊ฐœ์š”




PHP์˜ ์ ‘๊ทผ ์ œ์–ด์ž๋Š” ํด๋ž˜์Šค์˜ ์†์„ฑ(๋ณ€์ˆ˜)๊ณผ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ #์ ‘๊ทผ_๊ถŒํ•œ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

  • public: ํด๋ž˜์Šค ๋‚ด๋ถ€, ์™ธ๋ถ€ ์–ด๋””์—์„œ๋“  ์ž์œ ๋กญ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐœ๋ฐฉ์ ์ธ ์ ‘๊ทผ ๊ถŒํ•œ์ž…๋‹ˆ๋‹ค.

  • private: ํ•ด๋‹น ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์‹ ํด๋ž˜์Šค์—์„œ๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์™ธ๋ถ€์—์„œ๋Š” ์ „ํ˜€ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์—„๊ฒฉํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์ž…๋‹ˆ๋‹ค.

  • protected: ํ•ด๋‹น ํด๋ž˜์Šค ๋‚ด๋ถ€์™€ ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ #์ƒ์†๋ฐ›์€ #์ž์‹_ํด๋ž˜์Šค์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.







public ์ ‘๊ทผ ์ œ์–ด์ž


uploadImage


public์œผ๋กœ ์„ ์–ธ๋œ ์†์„ฑ์ด๋‚˜ ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋“  ๊ณณ์—์„œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ์บก์Аํ™” ์›์น™์— ์œ„๋ฐฐ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ public์œผ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

PHP

<?php
class Person {
    public $name; // public ์†์„ฑ

    public function introduce() { // public ๋ฉ”์„œ๋“œ
        echo "์•ˆ๋…•ํ•˜์„ธ์š”, ์ œ ์ด๋ฆ„์€ {$this->name}์ž…๋‹ˆ๋‹ค.". "<br>";
    }
}

$person = new Person();
$person->name = "ํ™๊ธธ๋™"; // ์™ธ๋ถ€์—์„œ public ์†์„ฑ ์ ‘๊ทผ
$person->introduce(); // ์™ธ๋ถ€์—์„œ public ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ

echo "์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ ‘๊ทผํ•œ ์ด๋ฆ„: " . $person->name . "<br>";
?>

์œ„ ์˜ˆ์ œ์—์„œ $name ์†์„ฑ๊ณผ introduce() ๋ฉ”์„œ๋“œ๋Š” public์œผ๋กœ ์„ ์–ธ๋˜์–ด ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ์ž์œ ๋กญ๊ฒŒ ์ ‘๊ทผํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.







private ์ ‘๊ทผ ์ œ์–ด์ž

uploadImage



private์œผ๋กœ ์„ ์–ธ๋œ ์†์„ฑ์ด๋‚˜ ๋ฉ”์„œ๋“œ๋Š” ์˜ค์ง ํ•ด๋‹น ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ง์ ‘ ์ˆ˜์ •๋˜๊ฑฐ๋‚˜, ๋‚ด๋ถ€ ๋กœ์ง์ด ์ž„์˜๋กœ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์—ฌ #๋ฐ์ดํ„ฐ_์€๋‹‰์„ ์‹คํ˜„ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. private ์†์„ฑ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ๋ณดํ†ต #Getter(์ฝ๊ธฐ) ๋ฐ #Setter(์“ฐ๊ธฐ) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

PHP

<?php
class Account {
    private $balance; // private ์†์„ฑ

    public function __construct($initialBalance) {
        $this->balance = $initialBalance;
    }

    // private ์†์„ฑ์— ์ ‘๊ทผํ•˜๋Š” public Getter ๋ฉ”์„œ๋“œ
    public function getBalance() {
        return $this->balance;
    }

    // private ์†์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋Š” public Setter ๋ฉ”์„œ๋“œ
    public function deposit($amount) {
        if ($amount > 0) {
            $this->balance += $amount;
            echo "{$amount}์› ์ž…๊ธˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ž”์•ก: {$this->balance}". "<br>";
        } else {
            echo "์œ ํšจํ•˜์ง€ ์•Š์€ ๊ธˆ์•ก์ž…๋‹ˆ๋‹ค.". "<br>";
        }
    }

    // private ๋ฉ”์„œ๋“œ (ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ํ˜ธ์ถœ ๊ฐ€๋Šฅ)
    private function logTransaction($type, $amount) {
        echo "[๋กœ๊ทธ] {$type}: {$amount}์›". "<br>";
    }

    public function withdraw($amount) {
        if ($amount > 0 && $this->balance >= $amount) {
            $this->balance -= $amount;
            $this->logTransaction("์ถœ๊ธˆ", $amount); // private ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
            echo "{$amount}์› ์ถœ๊ธˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ž”์•ก: {$this->balance}". "<br>";
        } else {
            echo "์ž”์•ก์ด ๋ถ€์กฑํ•˜๊ฑฐ๋‚˜ ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ธˆ์•ก์ž…๋‹ˆ๋‹ค.". "<br>";
        }
    }
}

$account = new Account(10000);
echo "ํ˜„์žฌ ์ž”์•ก: " . $account->getBalance() . "<br>"; // Getter๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ

$account->deposit(5000);
// $account->balance = 20000; // ์˜ค๋ฅ˜ ๋ฐœ์ƒ: private ์†์„ฑ ์™ธ๋ถ€ ์ ‘๊ทผ ๋ถˆ๊ฐ€
// $account->logTransaction("test", 100); // ์˜ค๋ฅ˜ ๋ฐœ์ƒ: private ๋ฉ”์„œ๋“œ ์™ธ๋ถ€ ํ˜ธ์ถœ ๋ถˆ๊ฐ€

$account->withdraw(3000);
?>

์œ„ ์˜ˆ์ œ์—์„œ $balance๋Š” private์œผ๋กœ ์„ ์–ธ๋˜์–ด ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  getBalance() (Getter)์™€ deposit(), withdraw() (Setter ์—ญํ• ) ๊ฐ™์€ public ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘๊ทผํ•˜๊ณ  ์กฐ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ logTransaction() ๋ฉ”์„œ๋“œ๋Š” private์ด๋ฏ€๋กœ withdraw() ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ๋งŒ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์™ธ๋ถ€์—์„œ๋Š” ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.







protected ์ ‘๊ทผ ์ œ์–ด์ž


uploadImage


protected๋กœ ์„ ์–ธ๋œ ์†์„ฑ์ด๋‚˜ ๋ฉ”์„œ๋“œ๋Š” ํ•ด๋‹น ํด๋ž˜์Šค์™€ ๊ทธ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ์ž์‹ ํด๋ž˜์Šค์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ƒ์† ๊ด€๊ณ„์—์„œ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ผ๋ถ€ ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ์ž์‹ ํด๋ž˜์Šค์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋ฉด์„œ๋„, ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ๋Š” ๋ณดํ˜ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

PHP

<?php
class Vehicle {
    protected $brand; // protected ์†์„ฑ
    private $model; // private ์†์„ฑ (์ž์‹๋„ ์ ‘๊ทผ ๋ถˆ๊ฐ€)

    public function __construct($brand, $model) {
        $this->brand = $brand;
        $this->model = $model;
    }

    protected function getModel() { // protected ๋ฉ”์„œ๋“œ
        return $this->model;
    }

    public function getInfo() {
        return "๋ธŒ๋žœ๋“œ: {$this->brand}, ๋ชจ๋ธ: {$this->getModel()}". "<br>";
    }
}

class Car extends Vehicle {
    public function __construct($brand, $model) {
        parent::__construct($brand, $model);
    }

    public function getCarDetails() {
        // ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ protected ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ
        return "์ด ์ž๋™์ฐจ์˜ ๋ธŒ๋žœ๋“œ๋Š” {$this->brand}์ด๊ณ , ๋ชจ๋ธ์€ {$this->getModel()}์ž…๋‹ˆ๋‹ค.". "<br>";
    }
}

$car = new Car("Hyundai", "Sonata");
echo $car->getInfo(); // public ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ •๋ณด ์ ‘๊ทผ
echo $car->getCarDetails(); // ์ž์‹ ํด๋ž˜์Šค์—์„œ protected ๋ฉค๋ฒ„ ์ ‘๊ทผ

// echo $car->brand; // ์˜ค๋ฅ˜ ๋ฐœ์ƒ: protected ์†์„ฑ ์™ธ๋ถ€ ์ ‘๊ทผ ๋ถˆ๊ฐ€
// echo $car->getModel(); // ์˜ค๋ฅ˜ ๋ฐœ์ƒ: protected ๋ฉ”์„œ๋“œ ์™ธ๋ถ€ ํ˜ธ์ถœ ๋ถˆ๊ฐ€
?>

์ด ์˜ˆ์ œ์—์„œ Vehicle ํด๋ž˜์Šค์˜ $brand ์†์„ฑ๊ณผ getModel() ๋ฉ”์„œ๋“œ๋Š” protected๋กœ ์„ ์–ธ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Car ํด๋ž˜์Šค๋Š” Vehicle์„ ์ƒ์†๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์—, getCarDetails() ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ $this->brand์™€ $this->getModel()์„ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ๋Š” ์ด๋“ค์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. $model์€ private์ด๋ฏ€๋กœ Car ํด๋ž˜์Šค์—์„œ๋„ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ณ , getModel() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๊ฐ„์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.






#์บก์Аํ™”๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ ์›์น™ ์ค‘ ํ•˜๋‚˜๋กœ, ํด๋ž˜์Šค์˜ #๋‚ด๋ถ€_๊ตฌํ˜„์„ ์ˆจ๊ธฐ๊ณ  #์™ธ๋ถ€_์ธํ„ฐํŽ˜์ด์Šค๋งŒ์„ ๋…ธ์ถœํ•˜์—ฌ ์ฝ”๋“œ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ด๊ณ  #๊ฒฌ๊ณ ์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์ ‘๊ทผ ์ œ์–ด์ž ์‚ฌ์šฉ์€ ์ž˜ ์„ค๊ณ„๋œ ๊ฐ์ฒด ์ง€ํ–ฅ ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ฐ˜์ด ๋ฉ๋‹ˆ๋‹ค.



๋ธ”๋กœ๊ทธKT๊ณ ์ •, ์‡ผํ•‘/์ง€๋„ ๋งˆ์ผ€ํŒ…KT์œ ๋™, ๊ฒŒ์ž„/์•ฑํ”Œ๋ ˆ์ด์–ด ๊ณ ์ •IP, 24์‹œ๊ฐ„์ƒ๋‹ด ๋Œ€๋Ÿ‰๊ตฌ๋งค ์‹œ ํ• ์ธํ˜œํƒ ์ œ๊ณต!

https://xn--299ao67b9qbmsf04c.net/