>백엔드 개발 >PHP 튜토리얼 >PHP의 액세스 수정자

PHP의 액세스 수정자

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

액세스 한정자는 다른 PHP 식별자의 변수에 대한 접근성 범위와 권한을 설정하는 방법입니다. 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의 다양한 액세스 수정자

아래에 언급된 PHP의 액세스 수정자는 다음과 같습니다

1. 공개 접근 수정자

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의 액세스 수정자

공개, 비공개, 보호는 수업 수준에 적용되지 않습니다. 예시를 통해 살펴보겠습니다.

<?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";
}
?>

2. 개인 접근 수정자

이 수정자는 처리할 비공개 키워드입니다.  클래스에는 비공개 수정자를 사용할 수 없습니다. 위 표에서 언급한 것처럼 클래스 변수 및 클래스 메서드에만 이를 사용할 수 있습니다. 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();를 사용하여 변수의 값을 설정합니다. 설정된 변수의 값을 얻을 수 있습니다.

3. 보호된 액세스 수정자

공개 및 비공개와 마찬가지로 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

4. 추상 액세스 수정자

클래스 변수가 아닌 클래스와 함수에서 사용할 수 있습니다. 클래스에 추상 함수가 하나 이상 있으면 추상으로 선언해야 합니다. 추상 클래스를 인스턴스화할 수 없습니다. 추상수업은 주로 불완전수업으로 간주됩니다.

5. 최종 접근 수정자

어떤 수업이 최종으로 선언되면 해당 수업을 연장할 수 없습니다. PHP는 최종 클래스가 상속되는 것을 제한합니다.

6. 정적 액세스 수정자

정적 키워드를 사용하면 모든 기능을 정적으로 만들 수 있습니다. 해당 함수의 기능을 활성화하여 해당 함수가 선언된 클래스의 개체를 만드는 데 사용할 수 있습니다. 정적 메소드 예시 –

public static function static Function()
{
// declaration goes here..
}

결론

비즈니스 요구 사항에 따라 항상 액세스 한정자를 사용해야 합니다. private 및 protected를 사용하면 선언된 클래스 외부에서 private 변수 및 private 메소드를 직접 사용하는 것을 제한할 수 있습니다.

위 내용은 PHP의 액세스 수정자의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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