첫 스킨 십 PHP 5(1)

글 출처:PHP Builder.com 원작 자:Luis Argerich 번역:erquanerquan 주:저 는 아직 PHP 5 를 체험 하고 있 습 니 다.단지 외국인 의 글 을 번역 할 뿐 입 니 다.다음은 모두 erquan 이 번역 하고 첫 번 째 로 이런 일 을 하 는 것 은 여러분 을 오도 하지 않 기 를 바 랍 니 다.정확 하지 않 은 부분 이 있 으 니 양해 해 주 십시오.여러분 이런 것 이 되 는 지 안 되 는 지 를 보 세 요.만약 에 된다 면 가끔 번역 을 다 하고 안 되면 번역 을 합 니 다.여러분 을 오도 하지 않도록 하 세 요.힘 들 어 요...........................................리 트 윗 할 때 글 의 출처 를 밝 혀 주 십시오.감사합니다.)PHP 5 의 정식 판 은 아직 발표 되 지 않 았 지만 개발 판 이 우리 에 게 가 져 온 PHP 의 새로운 특성 을 배우 고 체험 할 수 있 습 니 다.본 고 는 다음 과 같은 3 대 PHP 5 의 새로운 기능 을 집중 적 으로 소개 할 것 입 니 다.*새로운 대상 모델*구조 화 이상 처리*명칭 공간 이 본 격 적 으로 시작 되 기 전에 주의 하 시기 바 랍 니 다.*문장의 일부 예 는 PHP 4 의 방법 으로 이 루어 집 니 다.다만 문장의 가 독성 을 강화 하기 위해 서 입 니 다.*본 고 에서 기술 한 새로운 특성 은 정식 버 전과 차이 가 있 을 수 있 으 므 로 정식 버 전 을 기준 으로 하 시기 바 랍 니 다.
*새로운 대상 모드 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);?>

좋은 웹페이지 즐겨찾기