액세스 한정자는 다른 PHP 식별자의 변수에 대한 접근성 범위와 권한을 설정하는 방법입니다. PHP는 모든 변수가 모든 변수와 식별자에 액세스할 수 있도록 다양한 키워드를 지원합니다. 이러한 키워드를 클래스, 함수 또는 식별자에 할당할 수 있습니다. 이러한 키워드는 공개, 비공개, 보호, 추상, 최종 등입니다.
무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
PHP는 Java와 달리 액세스 수정자에 몇 가지 제한 사항이 있습니다. 클래스 수준, 함수 수준, 식별자 수준에서 모든 PHP 액세스 수정자를 사용할 수는 없습니다. 비즈니스 필요에 따라 이러한 액세스 수정자를 사용하여 프로그램이나 애플리케이션 전반에 걸쳐 권한을 부여하거나 취소할 수 있습니다.
목록 수정자와 적용 가능 여부는 다음과 같습니다.
Access Modifier | Class Level | Function Level | Variable Level |
public | NA | YES | YES |
private | NA | YES | YES |
protected | NA | YES | YES |
abstract | YES | YES | NA |
final | YES | YES | NA |
Static | NA | YES | YES |
위 이야기에서 NA는 해당 없음을 의미합니다. 즉, 클래스 수준에서는 public, private 및 protected를 사용할 수 없습니다. 초록과 최종문은 수업수준에서만 사용할 수 있습니다.
아래에 언급된 PHP의 액세스 수정자는 다음과 같습니다
public은 PHP의 JAVA와 같은 기본 수정자입니다. 즉, 기본적으로 식별자 기능과 함께 수정자를 사용하지 않으면 공용 액세스 수정자로 간주됩니다. 이것은 가장 널리 사용되는 것 중 하나입니다. 함수 코드의 재사용 가능성에 도달하는 순간 우리는 일반적으로 공개 액세스 수정자를 사용합니다. 공용은 클래스 내부, 클래스 외부, 확장 클래스 등 어디에서나 사용할 수 있기 때문에 공용 재사용 가능 항목이 어떤 클래스에도 제한되지 않는 경우 파일을 포함하는 어느 곳에서나 사용할 수 있습니다. 위 표에서 언급했듯이 이 public 수식어는 private 및 protected 클래스와 함께 사용할 수 없습니다.
이제 공개 액세스 수정자의 예를 볼 시간입니다.
<?php class MyAccess { var $var = "This is first var"; // print var variable value function returnVar() { echo $this->var; } } $obj1 = new MyAccess();$obj1->returnVar(); ?>
위 코드에서 returnVar() 함수는 액세스 수정자 없이 정의되었으므로 이것이 PHP 언어의 기본 수정자이므로 공개로 작동합니다.
공개, 비공개, 보호는 수업 수준에 적용되지 않습니다. 예시를 통해 살펴보겠습니다.
<?php class public MyAccess { var $var = "This is first var"; function returnVar() { echo $this->var; } } $obj1 = new MyAccess(); $obj1->returnVar(); ?>
위 코드는 아래와 같은 오류를 발생시킵니다.
( ! ) 구문 분석 오류: 구문 오류, 예기치 않은 '공개'(T_PUBLIC), 2행의 E:wampwwwtwitindex.php에 식별자(T_STRING)가 필요함
이것은 비공개 및 보호에도 동일합니다.
<?php class private MyAccess { var $var = "This is first var"; } ?> <?php class protected MyAccess { var $var = "This is first var"; } ?>
이 수정자는 처리할 비공개 키워드입니다. 클래스에는 비공개 수정자를 사용할 수 없습니다. 위 표에서 언급한 것처럼 클래스 변수 및 클래스 메서드에만 이를 사용할 수 있습니다. private을 선언하고 사용하면 클래스의 객체를 사용하여 접근할 수 없습니다. 수업 내에서만 사용 가능합니다.
예를 들어
<?php class MyAccess { var $var = "This is first var"; private $fist_name; // simple class method function returnVar() { echo $this->fist_name; } function set_fist_name($set_this){ $this->fist_name = $set_this; } } $obj1 = new MyAccess(); echo $obj1->fist_name; // will give the error $obj1->set_fist_name("Jai Shre"); $obj1->returnVar(); ?>
echo $obj1->fist_name; // 오류가 발생합니다
오류가 발생하므로 다음 코드 줄을 사용할 수 있습니다. 이는 해당 클래스의 객체를 사용하여 개인 변수에 액세스할 수 없는 것입니다. 하지만 위 코드에서 사용하는 것처럼 설정과 getter 메서드를 사용하면 이를 사용할 수 있습니다. $obj1->set_fist_name("제이 슈레"); 코드 줄은 $obj1->returnVar();를 사용하여 변수의 값을 설정합니다. 설정된 변수의 값을 얻을 수 있습니다.
공개 및 비공개와 마찬가지로 protected 자체는 클래스 수준에서 지원되지 않습니다. private 수정자와 마찬가지로 protected도 클래스 변수의 액세스나 클래스 외부에서의 함수를 제한합니다. 동일한 클래스 내에서 사용 가능하며 하위 클래스(자식 클래스)에서도 사용할 수 있습니다.
예를 들어
<?php class MyAccess { var $var = "This is first var"; protected $fist_name; // simple class method function returnVar() { echo $this->fist_name; } function set_fist_name($set_this){ $this->fist_name = $set_this; } } class child extends MyAccess { function setVal($set_this){ $this->fist_name = $set_this; } function getVal(){ echo $this->fist_name; } } $obj1 = new child(); //echo $obj1->fist_name; // will give the error $obj1->setVal("Jai Shre"); $obj1->getVal(); ?>
echo $obj1->fist_name; 코드 줄은 아래 오류를 발생시킵니다
출력:
치명적인 오류: E:wampwwwtwitindex.php의 보호된 속성 MyAccess::$fist_name에 온라인으로 액세스할 수 없습니다. 20
클래스 변수가 아닌 클래스와 함수에서 사용할 수 있습니다. 클래스에 추상 함수가 하나 이상 있으면 추상으로 선언해야 합니다. 추상 클래스를 인스턴스화할 수 없습니다. 추상수업은 주로 불완전수업으로 간주됩니다.
어떤 수업이 최종으로 선언되면 해당 수업을 연장할 수 없습니다. PHP는 최종 클래스가 상속되는 것을 제한합니다.
정적 키워드를 사용하면 모든 기능을 정적으로 만들 수 있습니다. 해당 함수의 기능을 활성화하여 해당 함수가 선언된 클래스의 개체를 만드는 데 사용할 수 있습니다. 정적 메소드 예시 –
public static function static Function() { // declaration goes here.. }
비즈니스 요구 사항에 따라 항상 액세스 한정자를 사용해야 합니다. private 및 protected를 사용하면 선언된 클래스 외부에서 private 변수 및 private 메소드를 직접 사용하는 것을 제한할 수 있습니다.
위 내용은 PHP의 액세스 수정자의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!