첫 스킨 십 PHP 5(1)
*새로운 대상 모드 PHP 5 새로운 대상 모드 는 PHP 4 를 바탕 으로'업그레이드'를 많이 했 습 니 다.JAVA 처럼 보일 것 입 니 다.(.아래 의 일부 문 자 는 간단 한 소 개 를 하고 PHP 5 의 새로운 기능 come on~~:)*구조 함수 와 석조 함수*대상 의 인용*복제 대상*대상 의 3 가지 모델:개인,공공,보호*인터페이스*가상 클래스*call()* __set()와get()*정적 구성원
구조 함수 와 분석 함 수 는 PHP 4 에서 클래스 이름과 같은 함수 가 기본적으로 이 클래스 의 구조 기 이 며,PHP 4 에 서 는 분석 함수 의 개념 이 없습니다.(이 천주:이 점 은 JAVA 와 같 습 니 다)그러나 PHP 5 부터 구조 함 수 는 로 통일 되 었 습 니 다.construct,그리고 석조 함수 가 생 겼 습 니 다:destruct(이 천주:이 점 은 Delphi 와 마찬가지 로 PHP 5 는 많은 성숙 한 OO 사상 을 흡수 한 것 을 알 수 있 습 니 다.그러나 C 는 축하 할 수 있 습 니 다~~):예 1:구조 함수 와 분석 함수x = $x; } function display() { print($this->x); } function __destruct() { print("bye bye"); }}$o1 = new foo(4);$o1->display();?>실행 이 끝나 면"bye bye"출력 을 볼 수 있 습 니 다.클래스 가 종 료 될 때 를 호출 했 기 때 문 입 니 다.destruct()분석 함수~~
대상 의 인용 은 아시 다시 피 PHP 4 에서 함수 나 방법 에 변 수 를 전달 할 때 실제 적 으로 copy 를 전달 합 니 다.PHP 5 에서 대상 은 항상 인용 방식 으로 지 정 됩 니 다:예 2:대상 의 인용x = $x; } function getX() { return $this->x; }}$o1 = new foo;$o1->setX(4);$o2 = $o1;$o1->setX(5);if($o1->getX() == $o2->getX()) print("Oh my god!");?>(이 천주:"Oh my god!"드 롭 아웃
복제 대상 이 위 와 같 습 니 다.대상 의 인용 을 받 지 않 고 copy 를 사용 하려 고 할 때 는 어떻게 합 니까?PHP 5 에서 제공 하 는clone 방법 중 실현:예 3:복제 대상x = $x; } function getX() { return $this->x; }}$o1 = new foo;$o1->setX(4);$o2 = $o1->__clone();$o1->setX(5);if($o1->getX() != $o2->getX()) print("Copies are independant");?>복제 대상 의 방법 은 이미 많은 언어 에 응용 되 었 기 때문에 그 성능 을 걱정 할 필요 가 없다.)
Private,Public,Protected 는 PHP 4 에서 대상 의 밖에서 임의의 방법 과 변 수 를 조작 할 수 있 습 니 다.방법 과 변 수 는 공용 이기 때 문 입 니 다.PHP 5 에서 변수,방법 에 대한 제어 권한 을 제어 하 는 3 가지 모드 를 인 용 했 습 니 다:Public(공용),Protected(보 호 받 음),Private(개인)Public:방법 과 변 수 는 임의의 경우 Private 에 접근 할 수 있 습 니 다.클래스 내부 에서 만 접근 할 수 있 고,하위 클래스 도 Protected 에 접근 할 수 없습니다.클래스 내부,하위 클래스 에서 만 접근 할 수 있 습 니 다.예 4:Public,proctected and privateprivate_foo(); //Ok because we are in the same class we can call private methods print("I'm protected"); } private function private_foo() { $this->x = 3; print("I'm private"); }}class foo2 extends foo { public function display() { $this->protected_foo(); $this->public_foo(); // $this->private_foo(); // Invalid! the function is private in the base class }}$x = new foo();$x->public_foo();//$x->protected_foo(); //Invalid cannot call protected methods outside the class and derived classes//$x->private_foo(); //Invalid private methods can only be used inside the class$x2 = new foo2();$x2->display();?>알림:변 수 는 항상 개인 형식 입 니 다.개인 변 수 를 직접 방문 하 는 것 은 좋 은 OOP 사상 이 아 닙 니 다.다른 방법 으로 set/get 의 기능 을 실현 해 야 합 니 다.
인 터 페 이 스 는 알다 시 피 PHP 4 에서 계승 을 실현 하 는 문법 은'class foo extends parent'입 니 다.PHP 4 든 PHP 5 든 다 중 계승 을 지원 하지 않 으 면 한 클래스 에서 만 계승 할 수 있 습 니 다.PHP 5 의'인터페이스'는 이러한 특수 한 유형 입 니 다.특정한 방법 을 구체 적 으로 실현 하지 않 고 방법의 이름과 가지 고 있 는 요 소 를 정의 한 다음 에 키 워드 를 통 해 이들 을 함께 인용 하고 구체 적 인 동작 을 실현 합 니 다.예제 5:인터페이스이 코드 의 읽 기와 이해 성에 매우 도움 이 됩 니 다.이 종 류 를 읽 었 을 때 foo 는 인터페이스 displayable 과 printable 을 포함 하고 있 으 며 print()(이 천 주:doprint()방법 과 display()방법 이 있 을 것 입 니 다.내부 에서 어떻게 실현 되 는 지 알 필요 없 이 쉽게 조작 할 수 있 습 니 다.
가상 클래스 가상 클래스 는 실례 화 될 수 없 는 클래스 로 초 클래스 처럼 방법 과 변 수 를 정의 할 수 있다.가상 클래스 에서 가상 방법 을 정의 할 수 있 고 이 방법 도 이 클래스 에서 실 현 될 수 없 지만 하위 클래스 에서 Example 6:가상 클래스x = $x; }}class foo2 extends foo { function display() { // Code }}?>
__call()방법 은 PHP 5 에서 를 정의 하면call()방법,클래스 에 존재 하지 않 는 변수 나 방법 에 접근 하려 고 할 때call()은 자동 으로 호출 됩 니 다:Example 7:call doStuff();$x->fancy_stuff();?>이 특수 한 방법 은 습관 적 으로'방법 과부하'를 실현 하 는 데 사 용 됩 니 다.왜냐하면 당신 은 개인 적 인 매개 변수 에 의 해 이 매개 변 수 를 실현 하고 검사 하기 때 문 입 니 다:Exampe 8: __call 실현 방법 재 부팅foo_for_int($arguments[0]); if(is_string($arguments[0])) $this->foo_for_string($arguments[0]); } } private function foo_for_int($x) { print("oh an int!"); } private function foo_for_string($x) { print("oh a string!"); }}$x = new Magic();$x->foo(3);$x->foo("3");?>
__set()방법 과get()방법 은 정의 되 지 않 은 변 수 를 방문 하거나 설정 할 때 이 두 가지 방법 이 호출 됩 니 다:Example 9:set and __get bar = 3;print($x->winky_winky);?>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
첫 스킨 십 PHP 5(1)인 터 페 이 스 는 알다 시 피 PHP 4 에서 계승 을 실현 하 는 문법 은'class foo extends parent'입 니 다.PHP 4 든 PHP 5 든 다 중 계승 을 지원 하지 않 으 면 한 클래스 에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.