* 오늘의 진도
PHP
클래스 멤버 만들기
32. 클래스 멤버 만들기
static(정적인)
이 property와 method는 다른 말로는
instance variable, instance method라고 부를 수도 있다.
즉, 인스턴스 상태에 따라서 다르게 동작한다.
지금 입장한 사람이 몇 번째 입장한 사람인지를 뒤에 표시하고 싶다면,
인스턴스변수만으로는 할 수 없다.
∵ 각각의 인스턴스들($p1, p2..)은 내부적으로 상태(egoing, leezche..)를 가지고 있는데,
그 상태는 다른 인스턴스에게 공유되지 않기 때문이다.
예를 들면
여기 있는 $name이라는 변수 안에 담겨있는 값은
각각의 인스턴스 안에서만 접근이 가능하기 때문에
다른 인스턴스가 접근할 수 없다.
예를 들어서 private count라고 하고 0이라고 하면
카운트가 생성될 때 0이 들어가는데,
생성자가 실행될 때, 즉 인스턴스가 생성될 때마다
this의 카운트 값을 1씩 증가시켜주는 코드를 넣는다.
그리고 뒤에 this->count를 붙이면
모두 1을 리턴하게 된다.
∵ 각각의 카운트 값은
각자 자신의 인스턴스 안에서만 유효하기 때문에
1을 증가시키는 것은 각각의 인스턴스에서 생성된 인스턴스 변수를 올리는 것뿐이다.
그러면 어떻게 하면 모든 인스턴스가 공유하는 변수를 만들 수 있을까?
static이라고 써준다.
그리고 this를 self로 고치고 count 앞에 $를 붙인다.
static을 붙이지 않으면 디폴트는 dynamic(동적이다)하다고 생각하면 된다.
각각의 인스턴스 변수는 이러한 구문을 통해서 인스턴스가 생성될 때
동적으로 생성된다.
인스턴스가 4개면, name이라는 property(인스턴스 변수)는 4개가 만들어진다.
하지만 ststic count라고 하면, count라는 변수는
person이라는 클래스에 소속된다.
그러나 static이 붙어 있지 않은 name이라는 변수는
예를 들면, 이 안에서는 $p1이라고 하는 변수에 담겨있는 인스턴스에 $name이 소속된다.
그래서 $name은 인스턴스 변수이고
$count는 static이 붙음으로써 class에 소속된 class 변수(class property)라고 할 수 있다.
정확하게는 static property라고 한다.
그리고 그 static한 property는
모든 인스턴스가 공유하기 때문에
우리가 이렇게 상태를 공유하는 것을 만들 수 있다.
그럼 이번에는 현재 총 몇 명이 만들어졌는지를 출력하는 메소드를 만들어 보자.
echo문을 만들고
enter 함수 밑에
getCount 함수를 만들고
그 앞에 static을 붙인다.
getCount는 static이 붙어있기 때문에 클래스의 소속이고
클래스의 소속인 경우에는
인스턴스를 만들지 않고 클래스를 통해서 직접 호출할 수 있다는 편리함을 갖게 된다.
그래서 static이라는 것은
클래스 소속의 멤버를 만들 때 사용하는 것이다.
멤버란, 변수와 함수들을 통틀어서 부르는 이름이다.
그리고 static이 없는 property나 method는
인스턴스의 멤버를 만드는 것이라고 보면 되고,
그 클래스 안에서 인스턴스에 대한 자기 자신을 원할 때는 this,
클래스에 대한 자기 자신을 원할 때는 self를 쓰고,
인스턴스의 경우에는 화살표를 쓰고,
클래스의 경우는 콜론 2개를 쓴다.
'PHP > 생활코딩' 카테고리의 다른 글
6/1 생활코딩 - PHP 기본 수업 - 컴포저 (0) | 2020.06.01 |
---|---|
5/31(5) 생활코딩 (0) | 2020.05.31 |
5/31 생활코딩 (0) | 2020.05.31 |
5/30(3) 생활코딩 (0) | 2020.05.30 |
5/30(2) 생활코딩 (0) | 2020.05.30 |
댓글