PHP 인스턴스 객체의 개인 속성에 직접 액세스하는 방법은 무엇입니까?

黄舟
풀어 주다: 2023-03-16 16:10:02
원래의
1653명이 탐색했습니다.

본 글에서는 주로 PHP 인스턴스 객체의 private 속성에 직접 접근하는 방법에 대해 소개하고 있으며, 예제 코드를 통해 자세히 소개하고 있어 공부나 업무를 하는 친구들에게 꼭 필요한 내용입니다. 아래에서 읽어보실 수 있습니다. 편집자와 함께 배워 보세요.

머리말

이 글에서는 PHP 인스턴스 객체의 private 속성에 직접 접근하는 방법에 대한 관련 내용을 주로 소개합니다. 핵심 부분을 소개하기에 앞서 먼저 PHP 객체지향 접근 제어를 살펴보겠습니다.

퍼블릭(public), 보호(protected) 또는 프라이빗(private) 키워드를 앞에 추가하여 속성이나 메서드에 대한 액세스 제어를 수행합니다. public으로 정의된 클래스 멤버는 어디에서나 액세스할 수 있습니다. protected로 정의된 클래스 멤버는 자체 클래스와 해당 하위 클래스 및 상위 클래스에서 액세스할 수 있습니다. private으로 정의된 클래스 멤버는 해당 멤버가 정의된 클래스에서만 액세스할 수 있습니다.

클래스 속성은 public, protected, private 중 하나로 정의되어야 합니다. var로 정의하면 공개로 간주됩니다.

아래 샘플 코드를 참조하세요. (공식 문서: http://php.net/manual/en/언어.oop5.visibility.php


<?php
/**
 * Define MyClass
 */
class MyClass
{
 public $public = &#39;Public&#39;;
 protected $protected = &#39;Protected&#39;;
 private $private = &#39;Private&#39;;

 function printHello()
 {
  echo $this->public;
  echo $this->protected;
  echo $this->private;
 }
}

$obj = new MyClass();
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello(); // Shows Public, Protected and Private
로그인 후 복사

위 코드에서 볼 수 있듯이, 우리는 인스턴스를 사용합니다. 클래스의 객체 클래스의 비공개 또는 보호된 멤버 속성에 액세스하면 치명적인 오류가 발생합니다.

다음은 기사 제목이 수행해야 하는 작업입니다. php 인스턴스 객체의 비공개 속성에 액세스하세요.

일반적인 방법은 공개 메서드를 작성하고 이 속성을 반환하는 것입니다.


public function getPrivate()
{
 return $this->private;
}
로그인 후 복사

사실은 이 작업을 수행해야 합니다.

다음은 특별한 시나리오에서의 사용 방법입니다. 평소에는 코드를 작성하지 마세요.


<?php
class A {
 private $a = &#39;self&#39;;
 public function test() {
  $other = new self();
  $other->a = &#39;other&#39;;
  var_dump($other->a);
 }
}

$aa = new A();
$aa->test();
로그인 후 복사

위 코드에서 볼 수 있듯이 새 A 개체를 만들고 이 인스턴스의 비공개 속성 a에 값을 할당했습니다.

동일한 인스턴스가 아니더라도 서로의 private 및 protected 멤버에 액세스할 수 있기 때문입니다.

위 내용은 PHP 인스턴스 객체의 개인 속성에 직접 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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