>  기사  >  백엔드 개발  >  PHP로 보호됨

PHP로 보호됨

PHPz
PHPz원래의
2024-08-29 13:08:26912검색

키워드는 기본적으로 특정 목적을 위해 모든 프로그래밍 언어에 예약되어 있는 특수 단어 집합입니다. 명령 또는 매개변수일 수 있으며 변수 이름과 같은 일반적인 용도로 사용할 수 없습니다. PHP로 보호됨은 PHP를 포함한 모든 언어로 사전 정의되어 있으며 예약된 이름이라고도 합니다.

광고 이 카테고리에서 인기 있는 강좌 PHP 개발자 - 전문 분야 | 8개 코스 시리즈 | 3가지 모의고사

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

PHP에는 5가지 종류의 액세스 수정자가 있습니다.

  • 공개
  • 비공개
  • 보호됨
  • 초록
  • 최종

이 글에서는 보호된 액세스 수정자에만 집중하겠습니다. 변수 외에도 보호 키워드는 메서드/함수 및 속성을 보호됨으로 선언하는 데에도 사용됩니다. 명시적으로 지정하지 않는 한 모든 변수와 메서드는 기본적으로 공개됩니다. 보호된 변수는 해당 변수 또는 메소드의 액세스가 선언된 클래스로 제한되기 때문에 해당 변수 또는 메소드의 가시성을 감소시킵니다. 보호된 액세스 한정자는 수업에 적용할 수 없습니다.

그러나 상위 클래스에서 상속된 하위 클래스에 의해 호출될 수 있습니다. 따라서 필요한 메소드나 변수에 "protected" 키워드를 접두어로 붙여서 보호됨을 선언할 수 있습니다.

구문

<?php
//declaration of protected variable
protected $<variable_name> = value;
//declaration of protected property
protected $proc = 'protected property';
//declaration of protected function
protected function function_name(){
//PHP code goes here
}
?>

여기서 보호 키워드를 사용하여 변수 이름과 함수 이름을 모두 선언하는 것을 볼 수 있습니다.

PHP에서 protected 수정자 작업: 개인 액세스 수정자와 마찬가지로 클래스 외부의 클래스 함수 및 변수의 사용과 액세스를 제한하기 위해 protected를 사용할 수도 있습니다. 그러나 비공개 변수로부터 보호되는 한 가지 예외는 하위 클래스의 상위 클래스에서 상속을 통해 액세스할 수 있다는 것입니다.

보호변수 및 메소드 예시

아래의 간단한 예를 통해 보호 수정자의 사용법과 작동 방식을 자세히 이해해 보겠습니다.

예시 #1

코드:

<?php
// Declaration of Main class
class Math {
protected $a = 30;
protected $b = 10;
// Declaration of division function
function division()
{
echo $div=$this->a/$this->b;
echo "\n";
}
protected function multiply()
{
echo $mul=$this->a*$this->b;
echo "\n";
}
}
// Declaration of child class addn inherited from above class
class addn extends Math {
// Declaration of addition function
function addition()
{
echo $division=$this->a+$this->b;
}
}
$obj= new addn;
$obj->division();
$obj->addition();
$obj->multiply();
?>

출력:

PHP로 보호됨

보호된 메서드를 호출하려는 29번째 줄에 주석을 단 후

PHP로 보호됨

위의 예에서는 덧셈, 나눗셈, 곱셈과 같은 다양한 수학 연산을 보여줍니다. 먼저, 접근 수정자 없이 Division() 함수를 선언합니다. 따라서 기본적으로 이는 공개이며 객체를 생성하여 함수를 호출할 때 변수 a와 b 모두에 대해 수행하는 나누기 값이 출력에 표시됩니다. 하지만 보호된 함수인 Multiply()를 호출하려고 하면 보호된 메서드를 호출할 수 없다는 인라인 34 오류가 발생합니다.

반면 표시된 것처럼 상속을 통해 보호된 메서드의 값을 호출하고 가져올 수 있습니다. 여기서 하위 클래스는 상위 클래스 Math에서 상속되므로 오류 없이 보호된 변수 a와 b를 호출할 수 있습니다.

예시 #2

코드:

<?php
class Animal {
// Declaration of protected variable $animal
protected $animal = array("Dog", "Cat", "Cow");
// Declaration of protected function for Animal description
protected function getDescription($animal) {
if($animal == "Dog") {
echo "Dogs are the most loyal animals";
}
else if($animal == "Cat") {
echo "Cats are very smart";
}
else if($animal == "Cow") {
echo "Cows are worshipped in India";
}
}
}
// Declaration of sub class of above Animal class
class Dog extends Animal {
protected $animal = "Dog";
// Declaration of public function to print dog's description
public function getDogDescription() {
// Here we call the protected getDescription() method of parent class Animal
$this->getDescription($this->animal);
}
}
// Creating an object of class Animal
$animal = new Animal();
// Creating an object of subclass Dog
$dog = new Dog();
/*
Trying to access protected variables and methods
*/
echo $animal->animal; // Cannot be accessed
$animal->getDescription("Dog"); // Cannot be accessed
echo $dog->animal; // Cannot be accessed
/*
We can call getDogDescription method,
in which we are calling a protected method
of Animal class
*/
$dog->getDogDescription();
?>

출력:

PHP로 보호됨

34번째 줄 댓글 작성 후

PHP로 보호됨

35행과 36행을 주석 처리한 후

PHP로 보호됨

이 예에서는 먼저 기본 부모 클래스 Animal을 선언하고 보호 변수를 3가지 다른 동물의 이름이 포함된 배열인 $animal로 초기화합니다. 다음으로, 배열의 각 동물에 고유한 설명을 제공하는 보호 기능도 선언합니다.

보호된 변수는 하위 클래스를 사용하여 액세스할 수 있으므로 여기서는 상위 클래스 Animal에서 또 다른 하위 클래스 Dog를 만듭니다. 또한 공개 함수는 어디에서나 접근 가능하다는 것을 보여주기 위해, 변수 dog의 설명을 출력하는 공개 함수를 선언합니다.

다음으로 Animal과 Dog 클래스의 객체를 생성하고 보호되는 해당 변수에 액세스하려고 합니다. 따라서 40, 41, 42행에서는 보호된 속성/메서드/변수에 액세스할 수 없다는 치명적인 오류가 발생합니다. 따라서 모든 변수가 보호되므로 Animal 클래스 외부의 변수에 액세스할 수 없습니다.

PHP에서 보호의 중요성

  • protected 한정자는 기본적으로 변수/메서드의 가시성을 줄이므로 어디에서나 액세스할 수 있는 public 액세스 한정자보다 더 안전합니다.
  • 하위 클래스만 보호된 메서드에 액세스할 수 있으며 클래스에서는 액세스할 수 없습니다.
  • 클래스를 보호 클래스로 만들면 클래스의 유용성이 매우 분명해집니다. 이는 많은 양의 데이터가 있고 여기에 명확한 표시를 해야 할 때 매우 유용합니다.
  • 보호된 변수와 멤버는 선언된 클래스에 공개되며 상위 클래스로부터 이 속성을 상속하는 하위 클래스에도 공개됩니다.
  • 가장 안전한 private보다 한 단계 낮은 두 번째 수준의 보안을 제공하며 그다지 안전하지 않은 public 한정자 다음입니다.
  • 개발자가 공유 가능한 멤버와 공유 불가능한 멤버를 설명하는 데 도움이 되며 클래스 내에서 이를 제한하는 데 도움이 됩니다.

결론

따라서 보호된 변수는 클래스에서 특별히 정의된 변수나 메서드 또는 속성을 제어하는 ​​데 사용되는 액세스 한정자입니다. 접두사를 사용하여 명시적으로 지정해야 하므로 선언된 패키지 내에서만 액세스할 수 있으며 상위 패키지에서 상속하는 하위 클래스를 통해서만 액세스할 수 있습니다.

위 내용은 PHP로 보호됨의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP의 비공개다음 기사:PHP의 비공개