
PHP ์จ๋ผ์ธ ๊ฐ์
>PHP - ์ค๊ธ
๐ 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)
#์ ์ _์์ฑ์ #ํด๋์ค์_์ํ_๋ฐ์ดํฐ์ด๋ฉฐ, ํน์ ๊ฐ์ฒด(#์ธ์คํด์ค)์ ์ํ ๋ฐ์ดํฐ๊ฐ ์๋๋๋ค. ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ณต์ ํ๋ ๊ณตํต๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
์ฃผ์ ํน์ง:
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)
#์ ์ _๋ฉ์๋๋ #ํด๋์ค_์ธ์คํด์ค_์์ด_ํธ์ถํ _์_์๋_๋ฉ์๋์ ๋๋ค. ์ฃผ๋ก ๊ฐ์ฒด์ ์์กดํ์ง ์๋ ์ ํธ๋ฆฌํฐ ํจ์๋ ํด๋์ค ์ ๋ฐ์ ๊ฑธ์ณ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ์์ ์ ์ํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
์ฃผ์ ํน์ง:
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/