키워드는 기본적으로 특정 목적을 위해 모든 프로그래밍 언어에 예약되어 있는 특수 단어 집합입니다. 명령 또는 매개변수일 수 있으며 변수 이름과 같은 일반적인 용도로 사용할 수 없습니다. 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를 사용할 수도 있습니다. 그러나 비공개 변수로부터 보호되는 한 가지 예외는 하위 클래스의 상위 클래스에서 상속을 통해 액세스할 수 있다는 것입니다.
아래의 간단한 예를 통해 보호 수정자의 사용법과 작동 방식을 자세히 이해해 보겠습니다.
코드:
<?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(); ?>
출력:
보호된 메서드를 호출하려는 29번째 줄에 주석을 단 후
위의 예에서는 덧셈, 나눗셈, 곱셈과 같은 다양한 수학 연산을 보여줍니다. 먼저, 접근 수정자 없이 Division() 함수를 선언합니다. 따라서 기본적으로 이는 공개이며 객체를 생성하여 함수를 호출할 때 변수 a와 b 모두에 대해 수행하는 나누기 값이 출력에 표시됩니다. 하지만 보호된 함수인 Multiply()를 호출하려고 하면 보호된 메서드를 호출할 수 없다는 인라인 34 오류가 발생합니다.
반면 표시된 것처럼 상속을 통해 보호된 메서드의 값을 호출하고 가져올 수 있습니다. 여기서 하위 클래스는 상위 클래스 Math에서 상속되므로 오류 없이 보호된 변수 a와 b를 호출할 수 있습니다.
코드:
<?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(); ?>
출력:
34번째 줄 댓글 작성 후
35행과 36행을 주석 처리한 후
이 예에서는 먼저 기본 부모 클래스 Animal을 선언하고 보호 변수를 3가지 다른 동물의 이름이 포함된 배열인 $animal로 초기화합니다. 다음으로, 배열의 각 동물에 고유한 설명을 제공하는 보호 기능도 선언합니다.
보호된 변수는 하위 클래스를 사용하여 액세스할 수 있으므로 여기서는 상위 클래스 Animal에서 또 다른 하위 클래스 Dog를 만듭니다. 또한 공개 함수는 어디에서나 접근 가능하다는 것을 보여주기 위해, 변수 dog의 설명을 출력하는 공개 함수를 선언합니다.
다음으로 Animal과 Dog 클래스의 객체를 생성하고 보호되는 해당 변수에 액세스하려고 합니다. 따라서 40, 41, 42행에서는 보호된 속성/메서드/변수에 액세스할 수 없다는 치명적인 오류가 발생합니다. 따라서 모든 변수가 보호되므로 Animal 클래스 외부의 변수에 액세스할 수 없습니다.
따라서 보호된 변수는 클래스에서 특별히 정의된 변수나 메서드 또는 속성을 제어하는 데 사용되는 액세스 한정자입니다. 접두사를 사용하여 명시적으로 지정해야 하므로 선언된 패키지 내에서만 액세스할 수 있으며 상위 패키지에서 상속하는 하위 클래스를 통해서만 액세스할 수 있습니다.
위 내용은 PHP로 보호됨의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!