티스토리 뷰
객체의 변수와 함수를 묘사하는 틀 혹은 명세서.
예를 들면 요리 클래스에는
요리명이나 재료 목록을 담는
변수가 있고 조리하기, 상 차리기,
재료 선정 등의 함수가 있다.
클래스 정의
class Entree {
public $name;
public $ingredients = array();
public function hasIngredient ($ingredient) {
return in_array($ingredient, $this->ingredients);
}
}
위의 클래스 정의는 특수 키워드인 class로 시작해
지정한 클래스명을 이어서 붙인다.
클래스명 뒤에는 중괄호를 쓰고 그 사이에
속성, 메서드 등 클래스 정의의 모든 내용을 넣는다.
위의 클래스에는 두 가지 속성($name, $ingredients) 과
한 가지 메서드(hasIngredient() )가 있다.
public 키워드는 외부에서 해당 속성이나 메서드에
접근할 수 있도록 허용할 것인지 PHP 엔진에 알려준다.
hasIngredient() 메서드 정의는 일반적인 함수 정의와
대체로 비슷해 보이지만 $this 라는 새로운 변수를 사용한다.
클래스는 여러 개의 객체로 인스턴스화될 수 있는데,
$this는 함수를 호출하는 현재 인스턴스를 가리키는 특수한 변수다.
바로 아래에서 작동 방식을 확인하자.
this
//객체를 생성하고 $soup에 할당
$soup = new Entree;
// $soup 속성 결정
$soup->name = '닭고기 수프';
$soup->ingredients = array('닭고기', '물');
// 또 다른 인스턴스를 생성하고 $sandwich에 할당
$sandwich = new Entree;
// $sandwich 속성 결정
$sandwich->name = '닭고기 샌드위치';
$sandwich->ingredients = array('닭고기','빵');
foreach (['닭고기','레몬','빵','물'] as $ing) {
if ($soup->hasIngredient($ing)) {
print "수프의 재료: $ing.\n";
}
if ($sandwich->hasIngredient($ing)) {
print "샌드위치의 재료: $ing.\n";
}
}
/* 출력결과
수프의 재료: 닭고기.
샌드위치의 재료: 닭고기.
샌드위치의 재료: 빵.
수프의 재료: 물.
new 지시자는 새로운 Entree 객체를 반환하므로
위에서 $soup와 $sandwich는 각각 서로 다른
Entree 클래스를 가리킨다.
화살표 지시자(->)는 빼기 기호와 부등호로 구성되며
객체 내부의 속성(변수)이나
메서드(함수)를 향한 길을 나타낸다.
속성에 접근하려면 객체명 뒤에
화살표를 붙이고 속성명을 넣는다.
메서드를 호출하려면 화살표 다음에 메서드명을 넣고
함수 호출을 표현하는 괄호와 내용을 이어서 쓴다.
속성과 메서드에 접근할 때 사용하는 화살표 지시자는
array()나 foreach() 에서 배열 키와 값을 구분하는
지시자와는 다르다는 점에 주의하라.
배열의 화살표(=>)에는 등호를 사용하며
객체의 화살표(->)에는 빼기 기호를 사용한다.
속성에 값을 할당하는 방법은
일반적인 변수에 값을 할당하는 방법과 똑같고,
속성명을 지시하는 화살표 지시자가 들어간다는 점만 다르다.
$soup->name은 $soup 변수가
담고있는 객체 인스턴스 내부의 name 속성'을 의미하며
$sandwich->ingredients은 $sandwich 변수가 담고있는
객체 인스턴스 내부의 ingredients 속성을 의미한다.
foreach() 루프 안에서는
각 객체의 hasingredient() 메서드가 호출된다.
메서드에는 재료명이 전달되며
객체의 재료 목록에 해당 재료가 있는지 여부를 반환한다.
이 부분에서 $this 변수가 어떻게 작동하는지 볼 수 있다.
$soup->hasIngredient() 를 호출하면
hasIngredient() 메서드의 내부에서 $this가
$soup를 가리킨다.
$sandwich->hasIngredient()를 호출하면
$this는 $sandwich를 가리킨다.
$this 변수는 항상
같은 객체 인스턴스를 가리키는 것이 아니라.
메서드를 호출한 인스턴스를 가리킨다.
'PHP' 카테고리의 다른 글
PHP 생성자 (0) | 2021.04.08 |
---|---|
PHP 정적 메서드 (0) | 2021.04.08 |
PHP 다른 파일의 코드 실행하기 (0) | 2021.04.06 |
PHP 인수와 반환값 제한 (0) | 2021.04.06 |
PHP 함수 내부에서 전역변수에 접근 (0) | 2021.04.06 |
- Total
- Today
- Yesterday
- C언어정적메모리할당
- C언어동적메모리할당
- 무효트래픽이의신청
- PHP문자열연결연산자
- PHP"'
- PHP작은따옴표역할
- C언어다차원포인터
- html이미지
- 이미지무료다운로드사이트
- PHPescapecharacter
- PHP이스케이핑
- PHP마침표
- PHP큰따옴표
- html이미지넣기
- PHP'
- C언어2차원포인터
- HTMLtag사용법
- PHP큰따옴표작은따옴표차이점
- PHP이스케이프
- HTML태그사용법
- htmlTag
- HTMLbestTag
- C언어프로세스
- PHPhere문서
- PHP'"
- 무효클릭신고양식
- PHPescaping
- PHP작은따옴표
- C언어malloc
- C언어malloc함수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |