PHP 대상 프로 그래 밍

대상 을 대상 으로 프로 그래 밍 하 는 개념:서로 다른 작가 간 의 표현 이 다 를 수 있 지만 OOP 언어 는 다음 과 같은 몇 가지 측면 이 있어 야 한다.추상 적 인 데이터 유형 과 정보 패 키 징 이다.  이어받다  다 형  PHP 에 서 는 클래스 를 통 해 패키지 가 완 료 됩 니 다:  x=$v;  }  function getX() {  return $this->x;  }  }  물론 당신 은 자신의 취향 에 따라 정 의 를 내 릴 수 있 지만,하나의 기준 을 유지 하 는 것 이 더욱 효과 적일 것 입 니 다.데이터 구성원 은 클래스 에서"var"성명 을 사용 하여 정의 합 니 다.데이터 구성원 에 게 값 을 부여 하기 전에 유형 이 없습니다.하나의 데이터 구성원 은 하나의 정수,하나의 배열,하나의 관련 배열(associative)일 수 있다. array)또는 대상.방법 은 클래스 에서 함수 형식 으로 정의 되 어 있 습 니 다.방법 에서 클래스 구성원 변 수 를 방문 할 때$this->name 을 사용 해 야 합 니 다.그렇지 않 으 면 한 방법 으로 는 부분 변수 일 수 밖 에 없습니다.  new 연산 자 를 사용 하여 대상 을 만 듭 니 다:  $obj=new Something;  그리고 당신 은 구성원 함 수 를 사용 하여 통과 할 수 있 습 니 다:  $obj->setX(5);  $see=$obj->getX();  이 예 에서 setX 구성원 함 수 는 대상 의 구성원 변수 x(클래스 가 아 닌)에 5 대 값 을 부여 한 다음 getX 는 값 5 를 되 돌려 줍 니 다.$obj->x=6 처럼 클래스 인용 방식 으로 데이터 구성원 을 액세스 할 수 있 습 니 다.이것 은 좋 은 OOP 습관 이 아 닙 니 다.나 는 방법 을 통 해 구성원 변 수 를 액세스 할 것 을 강력 히 건의 합 니 다.구성원 변 수 를 처리 할 수 없 는 것 으로 보고 대상 핸들 만 사용 하면 좋 은 OOP 프로그래머 가 될 것 입 니 다.불 행 히 도 PHP 는 개인 구성원 변 수 를 지원 하지 않 기 때문에 불량 코드 는 PHP 에서 도 허용 된다.계승 은 PHP 에서 쉽게 이 루어 집 니 다.extend 키 만 사용 하면 됩 니 다.  y=$v;  }  function getY() {  return $this->y;  }  }  "Another'클래스 의 대상 은 현재 부모 클래스(Something)의 모든 데이터 구성원 과 방법 을 가지 고 있 으 며,자신의 데이터 구성원 과 방법 도 추가 되 었 다.$obj 2=new 를 사용 할 수 있 습 니 다. Something; $obj2->setX(6); $obj2->setY(7);  PHP 는 아직 다 중 계승 을 지원 하지 않 기 때문에 두 개 이상 의 클래스 에서 새로운 클래스 를 파생 시 킬 수 없습니다.파생 클래스 에서 방법 을 다시 정의 할 수 있 습 니 다.만약 우리 가"Another"클래스 에서 getX 방법 을 다시 정의 한다 면 우 리 는 사용 할 수 없습니다. "Something"의 getX 방법 을 사 용 했 습 니 다.만약 당신 이 파생 류 에서 기 파 와 같은 이름 의 데이터 구성원 을 성명 했다 면,당신 이 그것 을 처리 할 때, 기본 클래스 의 데이터 구성원 을 숨 깁 니 다.너 는 너의 클래스 에서 구조 함 수 를 정의 할 수 있다.구조 함 수 는 클래스 이름과 같은 방법 입 니 다.클래스 의 대상 을 만 들 때 호출 됩 니 다.예 를 들 어:  x=$y;  }  function setX($v) {  $this->x=$v;  }  function getX() {  return $this->x;  }  }  그래서 대상 을 만 들 수 있 습 니 다.통과:  $obj=new Something(6);  구조 함 수 는 자동 으로 6 대 값 을 데이터 변수 x 에 부여 합 니 다.구조 함수 와 방법 은 모두 일반적인 PHP 함수 이기 때문에 결 성 된 인 자 를 사용 할 수 있 습 니 다.  function Something($x="3",$y="5")  이어서:  $obj=new Something(); // x=3 and y=5  $obj=new Something(8); // x=8 and y=5  $obj=new Something(8,9); // x=8 and y=9  결 성 된 매개 변 수 는 C++방식 을 사용 하기 때문에 Y 의 값 을 무시 할 수 없습니다.X 에 결 성 된 매개 변 수 를 주 십시오.매개 변 수 는 왼쪽 에서 오른쪽으로 할당 되 어 있 습 니 다.만약 에 들 어 오 는 매개 변수 가 요구 하 는 매개 변수 보다 적 으 면 결 성 된 매개 변 수 를 사용 합 니 다.  파생 클래스 의 대상 이 생 성 되 었 을 때 구조 함수 만 호출 되 었 습 니 다.부모 클래스 의 구조 함수 가 호출 되 지 않 았 습 니 다.기본 클래스 의 구조 함 수 를 호출 하려 면 파생 클래스 의 구조 함수 에 호출 을 표시 해 야 합 니 다.이렇게 할 수 있 는 것 은 파생 류 에서 모든 부류 의 방법 이 사용 할 수 있 기 때문이다.  y=5;  $this->Something();  //호출 기본 클래스 구조 함수 보이 기  }  OOP 의 좋 은 메커니즘 은 추상 류 를 사용 하 는 것 이다.추상 류 는 실례 화 할 수 없고 파생 류 에 만 인 터 페 이 스 를 제공 할 수 있다.디자이너 는 일반적으로 추상 적 인 유형 을 사용 하여 프로그래머 에 게 기본 적 인 유형 에서 파생 하도록 강요한다.그러면 새로운 유형 이 기대 하 는 기능 을 포함 하도록 확보 할 수 있다.PHP 에 서 는 표준 적 인 방법 이 없습니다.그러나 이 기능 이 필요 하 다 면 기본 클래스 를 정의 하고 구조 함수 에"die"를 추가 할 수 있 습 니 다. 호출 문장,따라서 한 프로그래머 가 파생 클래스 에 덮어 쓰 는 방법 이 없 으 면 오류 가 발생 할 수 있 습 니 다.그리고 PHP 때문에 유형 이 없습니다.대상 이 기본 클래스 에서 온 파생 클래스 임 을 확인 해 야 할 수도 있 습 니 다.기본 클래스 에 실제 클래스 의 신분(특정한 표지 id 로 돌아 가기)을 추가 하고 대상 파 라 메 터 를 받 았 을 때 이 값 을 확인 해 야 합 니 다.물론 사악 하고 나 쁜 프로그래머 가 파생 류 에 이 방법 을 덮어 쓰 면 이런 방법 은 소 용이 없다.그러나 일반적인 문 제 는 사악 한 프로그래머 가 아니 라 게 으 른 프로그래머 에 게 서 많이 발견 된다.물론 기본 클래스 가 프로그래머 에 게 보이 지 않 게 하 는 것 은 좋 은 일이 다.인 터 페 이 스 를 인쇄 해서 그들의 일 을 하면 된다.PHP 에는 석조 함수 가 없습니다.다시 불 러 오기(덮어 쓰기 와 다 름)는 PHP 에서 지원 되 지 않 습 니 다.OOP 에 서 는 두 개 이상 의 방법 이 같은 이름 을 가지 고 있 지만 수량 이나 유형의 매개 변수 가 있 습 니 다.PHP 느슨 한 유형의 언어 이기 때문에 유형 을 통 해 다시 불 러 오 는 것 은 효과 가 없 지만 매개 변수의 개수 에 따라 다시 불 러 오 는 것 도 효과 가 없다.  때때로 OOP 에서 구조 함 수 를 다시 불 러 오 는 것 이 매우 좋 습 니 다.그러면 서로 다른 방법 으로 대상 을 만 들 수 있 습 니 다(서로 다른 수량의 인 자 를 전달 할 수 있 습 니 다).PHP 에서 이 를 실현 하 는 기 교 는:  $name();  //$this->name()은 일반적으로 잘못 되 었 지만,여기 서$name 은 호출 될 방법의 이름 입 니 다.  }  function Myclass1($x) {  code;  }  function Myclass2($x,$y) {  code;  }  }  클래스 의 추가 처 리 를 통 해 이 클래스 를 사용 하면 사용자 에 게 투명 합 니 다.  $obj1=new Myclass('1'); //Myclass 1 호출  $obj2=new Myclass('1','2'); //Myclass 2 호출  때때로 이것 은 매우 쓰기 좋다.다 형  다 형 은 대상 의 능력 으로 운행 시간 에 전달 하 는 대상 매개 변수 에 따라 어떤 대상 을 호출 하 는 방법 을 결정 할 수 있다.예 를 들 어 figure 클래스 가 있다 면 draw 방법 을 정의 합 니 다.원 과 rectangle 을 파생 시 켰 습 니 다. 클래스,파생 클래스 에서 draw 방법 을 덮어 썼 습 니 다.함수 가 하나 더 있 을 수 있 습 니 다.인자 x 를 사용 하고$x->draw()를 호출 할 수 있 습 니 다. 。만약 당신 이 다 형 성 을 가지 고 있다 면,어떤 draw 방법 을 호출 하 는 것 은 이 함수 에 전달 하 는 대상 유형 에 의존 합 니 다.

좋은 웹페이지 즐겨찾기