PHP 튜토리얼

PHP 홈 PHP 소개 PHP 설치 PHP 구문 PHP 주석 PHP 변수 PHP 에코 / 인쇄 PHP 데이터 유형 PHP 문자열 PHP 숫자 PHP 수학 PHP 상수 PHP 연산자 PHP If...Else...Elseif PHP 스위치 PHP 루프 PHP 함수 PHP 배열 PHP 슈퍼글로벌 PHP 정규식

PHP 양식

PHP 양식 처리 PHP 양식 유효성 검사 PHP 양식 필요 PHP 양식 URL/이메일 PHP 양식 완성

PHP 고급

PHP 날짜 및 시간 PHP 포함 PHP 파일 처리 PHP 파일 열기/읽기 PHP 파일 생성/쓰기 PHP 파일 업로드 PHP 쿠키 PHP 세션 PHP 필터 PHP 필터 고급 PHP 콜백 함수 PHP JSON PHP 예외

PHP OOP

PHP OOP란? PHP 클래스/객체 PHP 생성자 PHP 소멸자 PHP 액세스 수정자 PHP 상속 PHP 상수 PHP 추상 클래스 PHP 인터페이스 PHP 특성 PHP 정적 메서드 PHP 정적 속성 PHP 네임스페이스 PHP 반복 가능

MySQL 데이터베이스

MySQL 데이터베이스 MySQL 연결 MySQL 생성 DB MySQL 테이블 생성 MySQL 삽입 데이터 MySQL 마지막 ID 가져오기 MySQL은 다중 삽입 MySQL 준비 MySQL 선택 데이터 MySQL 어디 MySQL 주문 기준 MySQL 데이터 삭제 MySQL 업데이트 데이터 MySQL 제한 데이터

PHP XML

PHP XML 파서 PHP SimpleXML 파서 PHP SimpleXML - 가져오기 PHP XML 국외 거주자 PHP XML DOM

PHP - AJAX

AJAX 소개 AJAX PHP AJAX 데이터베이스 AJAX XML AJAX 라이브 검색 AJAX 투표

PHP 예제

PHP 예제 PHP 컴파일러 PHP 퀴즈 PHP 연습 PHP 인증서

PHP 참조

PHP 개요 PHP 배열 PHP 캘린더 PHP 날짜 PHP 디렉토리 PHP 오류 PHP 예외 PHP 파일 시스템 PHP 필터 PHP FTP PHP JSON PHP 키워드 PHP 라이브러리 XML PHP 메일 PHP 수학 PHP 기타 PHP MySQLi PHP 네트워크 PHP 출력 제어 PHP 정규식 PHP SimpleXML PHP 스트림 PHP 문자열 PHP 변수 처리 PHP XML 파서 PHP 우편번호 PHP 시간대

PHP OOP - 클래스와 객체


클래스는 객체의 템플릿이고 객체는 클래스의 인스턴스입니다.


OOP 케이스

과일이라는 클래스가 있다고 가정해 보겠습니다. 과일은 이름, 색상, 무게 등과 같은 속성을 가질 수 있습니다. 이러한 속성의 값을 유지하기 위해 $name, $color 및 $weight와 같은 변수를 정의할 수 있습니다.

개별 객체(사과, 바나나 등)가 생성되면 클래스에서 모든 속성과 동작을 상속하지만 각 객체는 속성에 대해 다른 값을 갖습니다.


클래스 정의

클래스는 class 키워드 뒤에 클래스 이름과 한 쌍의 중괄호({})를 사용하여 정의됩니다. 모든 속성과 메서드는 중괄호 안에 들어갑니다.

통사론

<?php
class Fruit {
  // code goes here...
}
?>

아래에서 두 개의 속성($name 및 $color)과 $name 속성을 설정하고 가져오기 위한 두 개의 메서드 set_name() 및 get_name()으로 구성된 Fruit이라는 클래스를 선언합니다.

<?php
class Fruit {
  // Properties
  public $name;
  public $color;

  // Methods
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
}
?>

참고: 클래스에서 변수는 속성이라고 하고 함수는 메서드라고 합니다!


객체 정의

클래스는 객체 없이는 아무것도 아닙니다! 클래스에서 여러 개체를 만들 수 있습니다. 각 개체에는 클래스에 정의된 모든 속성과 메서드가 있지만 속성 값은 서로 다릅니다.

클래스의 객체는 new키워드를 사용하여 생성됩니다.

아래 예에서 $apple 및 $banana는 Fruit 클래스의 인스턴스입니다.

예시

<?php
class Fruit {
  // Properties
  public $name;
  public $color;

  // Methods
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
}

$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');

echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>

아래 예제에서는 $color 속성을 설정하고 가져오기 위해 Fruit 클래스에 두 가지 메서드를 더 추가합니다.

예시

<?php
class Fruit {
  // Properties
  public $name;
  public $color;

  // Methods
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
  function set_color($color) {
    $this->color = $color;
  }
  function get_color() {
    return $this->color;
  }
}

$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>


PHP - $this 키워드

$this 키워드는 현재 개체를 참조하며 메서드 내에서만 사용할 수 있습니다.

다음 예를 보십시오.

예시

<?php
class Fruit {
  public $name;
}
$apple = new Fruit();
?>

그렇다면 $name 속성의 값은 어디에서 변경할 수 있습니까? 두 가지 방법이 있습니다.

1. 클래스 내부(set_name() 메서드를 추가하고 $this를 사용):

예시

<?php
class Fruit {
  public $name;
  function set_name($name) {
    $this->name = $name;
  }
}
$apple = new Fruit();
$apple->set_name("Apple");

echo $apple->name;
?>

2. 클래스 외부(속성 값을 직접 변경하여):

예시

<?php
class Fruit {
  public $name;
}
$apple = new Fruit();
$apple->name = "Apple";

echo $apple->name;
?>

PHP - instanceof

키워드를 사용하여 instanceof객체가 특정 클래스에 속하는지 확인할 수 있습니다.

예시

<?php
$apple = new Fruit();
var_dump($apple instanceof Fruit);
?>