> 백엔드 개발 > PHP 튜토리얼 > PHP OOP 부분 생성자 및 소멸자

PHP OOP 부분 생성자 및 소멸자

Mary-Kate Olsen
풀어 주다: 2024-12-14 04:43:09
원래의
678명이 탐색했습니다.

PHP OOP Part-Constructor and Destructor

이번 시리즈에서는 PHP 객체지향 프로그래밍(OOP)의 기본을 다루겠습니다. 콘텐츠는 순차적인 부분으로 구성되며 각 부분은 특정 주제에 중점을 둡니다. OOP 개념이 처음이거나 익숙하지 않은 경우 이 시리즈를 통해 단계별로 안내를 받을 수 있습니다. 이번에는 PHP의 생성자와 소멸자에 대해 알아보겠습니다. PHP OOP를 배우는 여정을 함께 시작해보세요!

생성자란 무엇입니까?

먼저 생성자란 무엇인지 알아보겠습니다. 간단히 말해서 생성자는 클래스의 객체가 생성될 때 자동으로 호출되는 특수 메서드입니다. 생성자는 객체의 속성을 초기화하는 데 사용됩니다. PHP의 마법의 방법입니다. 하지만 이제 우리는 생성자에 대해 자세히 이해할 필요가 있습니다. 먼저 코드 예시를 살펴보겠습니다.

코드 예

class Car
{
   public $name;
   public $color;

   public function setValue(string $name, string $color)
   {
      $this->name  = $name;
      $this->color = $color;
   }

   public function getValue()
   {
      echo "Car name: $this->name\n";
      echo "Car color: $this->color\n";
   }
}

$toyota = new Car;
$toyota->setValue('Toyota', 'Red');
$toyota->getValue();
로그인 후 복사
로그인 후 복사

위의 예나 이전 섹션에서는 메소드를 사용하여 객체의 값을 설정했습니다. 이를 Setter Method라고 하며, 클래스의 객체를 생성한 후 해당 객체의 메소드를 사용하여 값을 설정하면 이를 Setter Method라고 합니다. 그러나 PHP에 내장된 매직 메소드를 사용하면 이 프로세스를 단순화할 수 있습니다. 이 메소드를 생성자라고 하며, PHP에서는 __construct()를 사용하여 정의됩니다. 다음 예시를 살펴보겠습니다.

코드 예

class Car
{
   public $name;
   public $color;

   function __construct(string $name, string $color)
   {
      $this->name  = $name;
      $this->color = $color;
   }

   public function getValue()
   {
      echo "Car name: $this->name\n";
      echo "Car color: $this->color\n";
   }
}

$toyota = new Car('Toyota', 'Red');
$toyota->getValue();
로그인 후 복사
로그인 후 복사

이 예에서는 setValue 메서드를 사용하는 대신 __construct() 메서드를 사용했습니다. 그렇다면 __construct()를 사용하면 어떤 이점이 있을까요? 이전 예제에서는 Car 클래스의 객체를 생성한 후 setValue 메서드를 사용하여 각 자동차의 값을 전달해야 했습니다. 하지만 이제는 __construct()를 사용하면 객체 생성 시 값을 전달할 수 있고, 별도의 메소드를 호출할 필요가 없습니다.

그런데 이제 질문이 생깁니다. 우리는 __construct()를 호출하지 않았는데 어떻게 값을 받아 변수에 설정했습니까?

코드 예

new Car('Toyota', 'Red');
로그인 후 복사

클래스 내부에서 __construct()를 사용하고 해당 생성자가 외부에서 값을 받으면 클래스 객체를 생성할 때 첫 번째 대괄호에 있는 값을 전달할 수 있습니다. 이런 방식으로 객체를 생성하자마자 __construct() 메서드가 자동으로 호출됩니다. 즉, 클래스의 인스턴스를 생성할 때마다 __construct() 메서드가 즉시 호출됩니다. 이것이 생성자를 사용하여 객체의 속성을 초기화하는 방법입니다. __construct()는 매직 메서드이므로 명시적으로 호출할 필요가 없습니다. 특정 작업을 수행하기 위해 특정 시나리오에서 자동으로 실행됩니다.

소멸자 란 무엇입니까?

소멸자는 PHP의 마법 메서드이기도 합니다. 클래스를 사용하여 객체를 만들 때 해당 객체를 사용하여 다양한 작업을 수행합니다. 그러나 작업이 완료되면 개체가 파괴될 때 소멸자가 트리거된다는 의미입니다. 소멸자는 __destruct()를 사용하여 PHP에서 정의됩니다.

여기서, 클래스를 사용하여 여러 객체를 생성하는 경우 모든 객체가 소멸될 때 각 객체에 대해 __destruct() 메서드가 호출된다는 점에 유의하는 것이 중요합니다. 즉, 해당 클래스를 사용하여 생성된 객체의 개수만큼 __destruct() 메서드가 호출됩니다. 다음 예시를 살펴보겠습니다.

코드 예

class Car
{
   public $name;
   public $color;

   public function setValue(string $name, string $color)
   {
      $this->name  = $name;
      $this->color = $color;
   }

   public function getValue()
   {
      echo "Car name: $this->name\n";
      echo "Car color: $this->color\n";
   }
}

$toyota = new Car;
$toyota->setValue('Toyota', 'Red');
$toyota->getValue();
로그인 후 복사
로그인 후 복사

이 코드를 실행하면 다음과 같은 결과가 나옵니다.

class Car
{
   public $name;
   public $color;

   function __construct(string $name, string $color)
   {
      $this->name  = $name;
      $this->color = $color;
   }

   public function getValue()
   {
      echo "Car name: $this->name\n";
      echo "Car color: $this->color\n";
   }
}

$toyota = new Car('Toyota', 'Red');
$toyota->getValue();
로그인 후 복사
로그인 후 복사

이제 어떤 경우에 __destruct() 메서드를 사용해야 하는지 궁금하실 것입니다. 파일이나 데이터베이스로 작업할 때는 열어야 하지만 작업이 완료되면 파일이나 데이터베이스를 닫아야 합니다. 이러한 경우에는 __destruct() 메서드를 사용할 수 있습니다. 또한 __destruct() 메서드에 대한 실제 사용 사례가 많이 있습니다.

이제 __construct() 및 __destruct()에 대해 어느 정도 이해하셨기를 바랍니다. 이러한 메서드 외에도 PHP에는 __call(), __callStatic() 등과 같은 다른 중요한 매직 메서드가 있습니다. 이러한 메서드도 클래스 내의 다양한 시나리오에서 특정 작업을 수행하므로 사용할 수 있습니다.

오늘은 여기까지입니다. 다음 강의에서는 다른 주제에 대해 더 자세히 이야기하겠습니다. 계속 지켜봐 주시기 바랍니다! 즐거운 코딩하세요!

Linkedin과 GitHub에서 저와 소통하실 수 있습니다.

위 내용은 PHP OOP 부분 생성자 및 소멸자의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿