Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Algorithm
- BOJ
- graph
- 따배씨
- server
- Math
- 따라하면서 배우는 C언어
- String
- JavaScript
- greedy
- 생활코딩
- 백준
- Cleancode
- programmers
- 종만북
- C언어
- sorting
- php
- udemy
- DP
- Algospot
- C
- BASIC
- BFS
- 인프런
- 따라하며 배우는 C언어
- web
- Python
- dfs
- 정수론
Archives
- Today
- Total
몽상실현개발주의
[생활코딩] 17.9 클래스 멤버 만들기 (static) 본문
생활코딩 php 강좌
17. PHP의 객체 지향 프로그래밍
17.9 클래스 멤버 만들기 (static)
- Member : Instance 에 소속된 속성(변수)과 Method 를 의미
<?php
class Person{
private $name;
private $count = 0;
private static $staticCount = 0;
function __construct($name)
{
$this->name = $name;
$this->count = $this->count+1;
self::$staticCount = self::$staticCount + 1;
}
function enter(){
echo "<h1>Enter ".$this->name." privageCount:
{$this->count}th</h1>";
// 각각의 instance 내부에서만 유효하기 때문에, count 가 증가하지 않음
}
function staticEnter(){
echo "<h1>Enter ".$this->name." staticCount:"
.self::$staticCount."th</h1>";
}
static function getCount(){
return self::$staticCount;
}
}
$p1 = new Person('egoing');
$p1->enter();
$p1->staticEnter();
$p2 = new Person('leezche');
$p2->enter();
$p2->staticEnter();
$p3 = new Person('duru');
$p3->enter();
$p3->staticEnter();
$p4 = new Person('taiho');
$p4->enter();
$p4->staticEnter();
echo Person::getCount();
?>
$p1 = new Person('egoing');
$p1->enter();
$p1->staticEnter();
$p2 = new Person('leezche');
$p2->enter();
$p2->staticEnter();
$p3 = new Person('duru');
$p3->enter();
$p3->staticEnter();
$p4 = new Person('taiho');
$p4->enter();
$p4->staticEnter();
echo Person::getCount();
?>
// Enter egoing privageCount: 1th
// Enter egoing staticCount:1th
// Enter leezche privageCount: 1th
// Enter leezche staticCount:2th
// Enter duru privageCount: 1th
// Enter duru staticCount:3th
// Enter taiho privageCount: 1th
// Enter taiho staticCount:4th
// 4
- private 로 선언한 $count 는 instance 내부에서만 유효 하므로, 값이 증가하지 않음
- 각각의 생성된 instance 에 소속 되어 있는 instance property
- instance 내부의 변수 각각의 instance 가 생성 될 때, 동적(dynamic) 으로 생성 됨
- private static 으로 선언한 $staticCount 는 모든 instance 가 상태를 공유하므로, instance 가 생성 될 때마다 값이 증가
- Person class 에 소속되어 있는 class property
- 모든 instance 가 상태를 공유
- static function 은 class 에 소속됨 method 로 instnace 생성하지 않고, class 를 통해 직접 호출 가능
- echo Person::getCount();
- static 은 class 소속의 member (변수 + 함수) 를 정의할 때 사용
- static 이 없는 경우는 instance 의 member 를 정의
- class 내에서 자기 자신을 의미하는 것은 self
- instance 내에서 자기 자신을 의미하는 것은 $this
- class member 는 :: 사용
- instance member 는 -> 사용
이 글의 모든 사진과 내용의 출처는 생활코딩에 있음을 알려드립니다.
'Language > php' 카테고리의 다른 글
[생활코딩] 17.11 네임스페이스 (0) | 2021.06.08 |
---|---|
[생활코딩] 17.10 클래스 로딩 (0) | 2021.06.08 |
[생활코딩] 17.8 상속 기본 (inheritance) (0) | 2021.06.06 |
[생활코딩] 17.7 접근 제어자 (access modifier) (0) | 2021.06.06 |
[생활코딩] 17.6 생성자 (인스턴스 초기화) (0) | 2021.06.06 |
Comments