216.73.216.116 TODAY : 2,756

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

 > 

PHP - ์ค‘๊ธ‰

๐Ÿ“š PHP ์ค‘๊ธ‰ - 6์ฃผ์ฐจ: OOP ์‹ฌํ™” ๋ฐ ๋””์ž์ธ ํŒจํ„ด ์†Œ๊ฐœ - 03 ์ •์  ์†์„ฑ/๋ฉ”์„œ๋“œ (static)

๐Ÿ“š PHP ์ค‘๊ธ‰ - 6์ฃผ์ฐจ: OOP ์‹ฌํ™” ๋ฐ ๋””์ž์ธ ํŒจํ„ด ์†Œ๊ฐœ - 03 ์ •์  ์†์„ฑ/๋ฉ”์„œ๋“œ (static)
ํ‰์  10.0 ๋ผ์ด์„ผ์Šค free
์‚ฌ์šฉ์žํ‰์  10.0 ์šด์˜์ฒด์ œ
๋‹ค์šด๋กœ๋“œ 1 ํŒŒ์ผํฌ๊ธฐ 0
์ œ์ž‘์‚ฌ LUZENSOFT ๋“ฑ๋ก์ผ 2025-08-07 18:15:05
์กฐํšŒ์ˆ˜ 20
- ์„ค๋ช…

๐Ÿ“š PHP ์ค‘๊ธ‰ - 6์ฃผ์ฐจ: OOP ์‹ฌํ™” ๋ฐ ๋””์ž์ธ ํŒจํ„ด ์†Œ๊ฐœ - 03 ์ •์  ์†์„ฑ/๋ฉ”์„œ๋“œ (static)


์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” #์ฝ”๋“œ_์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ธ #ํŠธ๋ ˆ์ดํŠธ(Trait)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” #ํด๋ž˜์Šค์˜_์ธ์Šคํ„ด์Šค_์ƒ์„ฑ_์—†์ด๋„_์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ #์ •์ _์†์„ฑ(#static_property)๊ณผ #์ •์ _๋ฉ”์„œ๋“œ(#static_method)์— ๋Œ€ํ•ด ๊นŠ์ด ์žˆ๊ฒŒ ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.



์ •์  ์†์„ฑ (Static Properties)

uploadImage

#์ •์ _์†์„ฑ์€ #ํด๋ž˜์Šค์—_์†ํ•œ_๋ฐ์ดํ„ฐ์ด๋ฉฐ, ํŠน์ • ๊ฐ์ฒด(#์ธ์Šคํ„ด์Šค)์— ์†ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๊ณต์œ ํ•˜๋Š” ๊ณตํ†ต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•:

  • static ํ‚ค์›Œ๋“œ: ์†์„ฑ ์„ ์–ธ ์‹œ static ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • :: ์—ฐ์‚ฐ์ž: $ ๋Œ€์‹  # :: ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.

  • self ํ‚ค์›Œ๋“œ: ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์ •์  ์†์„ฑ์— ์ ‘๊ทผํ•  ๋•Œ๋Š” self::๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ํด๋ž˜์Šค ๋‹จ์œ„: ์ •์  ์†์„ฑ์€ ํด๋ž˜์Šค ๋‹จ์œ„๋กœ ๋”ฑ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋ฉฐ, ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๋™์ผํ•œ ๊ฐ’์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์ œ:

PHP

<?php
class User {
    // ์ •์  ์†์„ฑ: ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณต์œ ํ•˜๋Š” ํšŒ์› ์ˆ˜
    public static $userCount = 0;

    public function __construct() {
        // ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ์ •์  ์†์„ฑ ๊ฐ’์„ ์ฆ๊ฐ€
        self::$userCount++;
    }
}

$user1 = new User();
$user2 = new User();
$user3 = new User();

// ํด๋ž˜์Šค ์ด๋ฆ„์„ ํ†ตํ•ด ์ •์  ์†์„ฑ ๊ฐ’์— ์ ‘๊ทผ
echo "ํ˜„์žฌ ํšŒ์› ์ˆ˜: " . User::$userCount. PHP_EOL; // ๊ฒฐ๊ณผ: ํ˜„์žฌ ํšŒ์› ์ˆ˜: 3
?>

์ด ์˜ˆ์ œ์—์„œ $userCount๋Š” ๊ฐ User ๊ฐ์ฒด์— ๊ฐœ๋ณ„์ ์œผ๋กœ ์†ํ•œ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ, User ํด๋ž˜์Šค ์ž์ฒด์— ์†ํ•œ ๊ณตํ†ต ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.



์ •์  ๋ฉ”์„œ๋“œ (Static Methods)

uploadImage


#์ •์ _๋ฉ”์„œ๋“œ๋Š” #ํด๋ž˜์Šค_์ธ์Šคํ„ด์Šค_์—†์ด_ํ˜ธ์ถœํ• _์ˆ˜_์žˆ๋Š”_๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ๊ฐ์ฒด์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋‚˜ ํด๋ž˜์Šค ์ „๋ฐ˜์— ๊ฑธ์ณ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•:

  • static ํ‚ค์›Œ๋“œ: ๋ฉ”์„œ๋“œ ์„ ์–ธ ์‹œ static ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • :: ์—ฐ์‚ฐ์ž: -> ๋Œ€์‹  # :: ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

  • self์™€ static ํ‚ค์›Œ๋“œ:

    • ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์ •์  ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•  ๋•Œ๋Š” self::๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    • ํด๋ž˜์Šค ์ƒ์† ์‹œ ๋Ÿฐํƒ€์ž„์— ํ˜ธ์ถœ๋œ ํด๋ž˜์Šค์˜ ์ •์  ์†์„ฑ์ด๋‚˜ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด static::์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ #Late_Static_Binding์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • $this ์‚ฌ์šฉ ๋ถˆ๊ฐ€: ์ •์  ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ๋Š” ํŠน์ • ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” $this๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์ œ:

PHP

<?php
class MathHelper {
    public static $pi = 3.14159;

    // ์ธ์Šคํ„ด์Šค ์—†์ด ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ ์ •์  ๋ฉ”์„œ๋“œ
    public static function getCircleArea($radius) {
        // ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์ •์  ์†์„ฑ ์ ‘๊ทผ ์‹œ self:: ์‚ฌ์šฉ
        return self::$pi * ($radius * $radius);
    }
}

// ํด๋ž˜์Šค ์ด๋ฆ„์„ ํ†ตํ•ด ์ •์  ๋ฉ”์„œ๋“œ ์ง์ ‘ ํ˜ธ์ถœ
$area = MathHelper::getCircleArea(5);

echo "๋ฐ˜์ง€๋ฆ„์ด 5์ธ ์›์˜ ๋„“์ด: " . $area. PHP_EOL; // ๊ฒฐ๊ณผ: ๋ฐ˜์ง€๋ฆ„์ด 5์ธ ์›์˜ ๋„“์ด: 78.53975
?>

์ด์ฒ˜๋Ÿผ MathHelper ํด๋ž˜์Šค๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ํ•„์š” ์—†์ด MathHelper::getCircleArea()๋ฅผ ํ†ตํ•ด ์›์˜ ๋„“์ด๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.



์ •์  ์†์„ฑ/๋ฉ”์„œ๋“œ์˜ ํ™œ์šฉ ์‚ฌ๋ก€


  • ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ(Factory Method): ๊ฐ์ฒด ์ƒ์„ฑ์„ ๋‹ด๋‹นํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ •์ ์œผ๋กœ ๋งŒ๋“ค์–ด ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๊ณผ์ •์„ ์บก์Аํ™”ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค(Utility Class): ์ธ์Šคํ„ด์Šค์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ์ˆ˜ํ•™, ํŒŒ์ผ ์ฒ˜๋ฆฌ, ๋ฌธ์ž์—ด ์กฐ์ž‘ ๋“ฑ์˜ ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ๋ชจ์•„๋†“์€ ํด๋ž˜์Šค์— ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด(Singleton Pattern): ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•˜๋„๋ก ์ œํ•œํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์—์„œ ์ •์  ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๊ฐ€ ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ •์  ๋ฉค๋ฒ„๋Š” ํŽธ๋ฆฌํ•˜์ง€๋งŒ, #๊ณผ๋„ํ•œ_์‚ฌ์šฉ์€_๊ฐ์ฒด_์ง€ํ–ฅ_์„ค๊ณ„๋ฅผ_ํ›ผ์†ํ• _์ˆ˜_์žˆ์Šต๋‹ˆ๋‹ค. ์ •์  ๋ฉค๋ฒ„๋Š” ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๋ฏ€๋กœ #์ „์—ญ_๋ณ€์ˆ˜์™€_์œ ์‚ฌํ•ด์ ธ_ํ…Œ์ŠคํŠธ๊ฐ€_์–ด๋ ค์›Œ์ง€๊ณ _์˜์กด์„ฑ์„_๋†’์ผ_์ˆ˜_์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ •๋ง ์ธ์Šคํ„ด์Šค์™€ ๋ฌด๊ด€ํ•œ ๊ณตํ†ต ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฐ์ดํ„ฐ์—๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.




๊ณ ํ’ˆ์งˆ ์ฐฉํ•œ๊ฐ€๊ฒฉ ํ†ต์‹ ์‚ฌIP ๊ณ ์ •IP ์•ˆ์ „ํ•œVPN ์ดˆ๊ณ ์†VPN / ๊ฒŒ์ž„,๊ด‘๊ณ ,์šฐํšŒ์šฉ

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