제4 절 구조 함수 와 분석 함수[4]

한 클래스 에 함 수 를 설명 하면construct,이 함 수 는 구조 함수 로 간주 되 고 대상 인 스 턴 스 를 만 들 때 실 행 됩 니 다.분명히 말 하면두 개의 밑줄 입 니 다.다른 모든 함수 와 마찬가지 로 구조 함수 에 인자 나 기본 값 이 있 을 수 있 습 니 다.하나의 종 류 를 정의 하여 대상 을 만 들 고 그 속성 을 한 문장(statement)에 모두 넣 을 수 있 습 니 다.이름 도 로 정의 할 수 있 습 니 다.destruct 의 함수,PHP 는 대상 이 폐기 되 기 전에 이 함 수 를 호출 합 니 다.이것 은 석조 함수 라 고 합 니 다.계승 은 클래스 의 강력 한 기능 입 니 다.하나의 클래스(하위 클래스/파생 클래스)는 다른 클래스(부모 클래스/기본 클래스)의 기능 을 계승 할 수 있 습 니 다.파생 클래스 는 기본 클래스 의 모든 속성 과 방법 을 포함 합 니 다.또한 파생 류 에 다른 속성 과 방법 을 추가 할 수 있 습 니 다.기본 클래스 의 방법 과 속성 을 복사 할 수도 있 습 니 다.3.1.2 에 표 시 된 것 처럼 extends 키워드 로 클래스 를 계승 할 수 있 습 니 다.
구조 함수 가 어떻게 계승 되 는 지 알 고 싶 을 수도 있 습 니 다.다른 방법 과 함께 계승 되 었 을 때 대상 을 만 들 때 실행 되 지 않 습 니 다.이 기능 이 필요 하 다 면 두 번 째 장 에서 언급 한 연산 자 를 사용 해 야 합 니 다.이름 공간 을 가리 킬 수 있 습 니 다.parent 는 부모 이름 공간 을 가리 키 며 parent:construct 는 부모 클래스 의 구조 함 수 를 호출 합 니 다.
일부 대상 언어 는 클래스 뒤에 구조 함수 라 고 명명 되 어 있 습 니 다.PHP 의 이전 버 전도 마찬가지 입 니 다.지금도 이러한 방법 은 유효 합 니 다.즉,하나의 종 류 를 Animal 이 라 고 명명 하고 그 중에서 하나의 이름 을 만 드 는 것 도 Animal 의 방법 이 라면 이 방법 은 구조 함수 입 니 다.만약 하나의 종류 와 동시에 가 있다 면construt 구조 함수 와 클래스 이름과 같은 함수,PHP 는construct 는 구조 함수 로 간주 합 니 다.이것 은 이전 PHP 버 전 으로 작 성 된 클래스 를 사용 할 수 있 도록 합 니 다.그러나 새로운 스 크 립 트(PHP 5)는 를 사용 해 야 합 니 다.construct.
PHP 의 이러한 새로운 성명 구조 함수 방법 은 구조 함수 에 유일한 이름 을 가 질 수 있 습 니 다.클래스 의 이름 이 무엇 이 든 지 간 에 클래스 의 이름 을 바 꿀 때 구조 함수 의 이름 을 바 꿀 필요 가 없습니다.
PHP 에서 구조 함수 에 다른 방법 과 같은 접근 방식 을 제공 할 수 있 습 니 다.접근 방식 은 일정한 범위 내 에서 대상 을 예화 하 는 능력 에 영향 을 줄 수 있 습 니 다.이것 은 Singleton 모드 와 같은 고정된 디자인 모델 을 실현 할 수 있 습 니 다.
구조 함수 와 는 반대로 구조 함수 입 니 다.PHP 는 대상 을 메모리 에서 지 울 수 있 도록 호출 합 니 다.기본적으로 PHP 는 대상 속성 이 사용 하 는 메모리 만 방출 하고 대상 과 관련 된 자원 을 지 울 수 있 습 니 다.구조 함 수 는 대상 을 사용 한 후에 임의의 코드 를 실행 하여 메모 리 를 지 울 수 있 습 니 다.
PHP 에서 스 크 립 트 가 더 이상 대상 과 관련 이 없 음 을 결정 할 때,석조 함수 가 호출 됩 니 다.함수 의 네 임 스페이스 에서 함수 return 에서 발생 합 니 다.전역 변수 에 대해 서 는 스 크 립 트 가 끝 날 때 발생 합 니 다.대상 을 명확 하 게 없 애 려 면,이 대상 을 가리 키 는 변수 에 다른 값 을 할당 할 수 있 습 니 다.보통 변 수 를 NULL 로 할당 하거나 unset 로 호출 합 니 다.
아래 의 예 에서 클래스 에서 실례 화 된 대상 의 개 수 를 계산 합 니 다.Counter 클래스 는 구조 함수 부터 값 을 올 리 고 분석 함수 에서 값 을 줄 입 니 다.
클래스 를 정의 하면 new 로 이러한 인 스 턴 스 를 만 들 수 있 습 니 다.클래스 의 정 의 는 설계도 이 고 인 스 턴 스 는 조립 라인 에 놓 인 부품 입 니 다.New 는 클래스 의 이름 을 필요 로 하고 이러한 인 스 턴 스 를 되 돌려 줍 니 다.구조 함수 에 인자 가 필요 하 다 면 new 후에 파 라 메 터 를 입력 해 야 합 니 다.
function __construct() { self::$count++; }
function __destruct() { self::$count--; }
function getCount() { return self::$count; } }
//첫 번 째 인 스 턴 스$c=new Counter()를 만 듭 니 다.
//출력 1 print($c->getCount()."
n");
//두 번 째 인 스 턴 스$c2=new Counter()를 만 듭 니 다.
//출력 2 print($c->getCount()."
n");
//인 스 턴 스$c2=NULL 을 삭제 합 니 다.
//출력 1 print($c->getCount()."
n");?>
인 스 턴 스 를 새로 만 들 면 메모리 가 모든 속성 을 저장 할 준비 가 되 어 있 습 니 다.인 스 턴 스 마다 자신 만 의 속성 이 있 습 니 다.그러나 방법 은 이러한 모든 인 스 턴 스 가 공유 합 니 다.

좋은 웹페이지 즐겨찾기