본문 바로가기
PHP/생활코딩

5/31(3) 생활코딩

by SKim입니다 2020. 5. 31.

* 오늘의 진도

 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

댓글