>  기사  >  백엔드 개발  >  PHP의 클래스 메소드에 대한 액세스 권한은 무엇입니까?

PHP의 클래스 메소드에 대한 액세스 권한은 무엇입니까?

青灯夜游
青灯夜游원래의
2022-02-18 11:24:483701검색

PHP에는 클래스 메서드에 대한 세 가지 유형의 액세스 권한이 있습니다. 1. 클래스 내부, 하위 클래스 또는 클래스 외부에서 제한 없이 사용할 수 있는 공개 유형(공개) 2. 보호 유형(보호됨) , 프라이빗(Private) 유형(private)은 클래스 내부에서만 사용할 수 있고, 클래스 외부나 서브클래스에서는 사용할 수 없습니다.

PHP의 클래스 메소드에 대한 액세스 권한은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

클래스의 멤버 메서드

클래스에 정의된 함수를 멤버 메서드라고 합니다. 함수와 멤버 메서드의 유일한 차이점은 함수는 독립적인 함수를 구현하는 반면, 멤버 메서드는 클래스에서 동작을 구현하고 클래스의 일부라는 것입니다.

클래스에서 여러 멤버 메서드를 선언할 수 있습니다. 멤버 메서드 선언은 함수 선언과 동일합니다. 그러나 멤버 메서드를 선언할 때 함수 키워드 앞에 일부 액세스 권한 수정자를 추가하여 액세스를 제어할 수 있습니다. 공개, 비공개, 보호 등과 같은 권리.

메서드 액세스 권한

세 가지 액세스 권한이 있습니다:

public: 공개 유형, 클래스 내부, 하위 클래스 또는 클래스 외부에서 제한 없이 사용할 수 있습니다.

특징: 외부 호출 가능, 내부 호출 가능 , subclass callable

서브 클래스에서는 self::var를 통해 공용 메소드나 속성을 호출할 수 있고, parent::method는 상위 클래스 메소드를 호출할 수 있습니다

인스턴스에서는 $obj- >var를 전달하여 메소드를 호출할 수 있습니다. 또는 공개 유형의 속성

protected: 보호 유형, 클래스 및 하위 클래스 내부에서 사용할 수 있지만 클래스 외부에서는 사용할 수 없습니다.

특징: 외부에서는 호출할 수 없고 내부에서는 호출 가능 또는 속성은 self::var를 통해 호출할 수 있고 parent::method는 상위 클래스 메서드를 호출할 수 있습니다

인스턴스에서는 $obj->var 속성을 통해 보호 유형 메서드나 메서드를 호출할 수 없습니다.

private: private 유형. ,

은 클래스 내부에서만 사용할 수 있고, 클래스 외부나 하위 클래스에서는 사용할 수 없습니다. 기능: 외부 호출 불가, 내부 호출 가능, 서브클래스 호출 불가

이 유형의 속성 또는 메소드는 이 클래스에서만 사용할 수 있으며 이 클래스의 인스턴스, 서브클래스 또는 서브클래스의 인스턴스에서는 호출할 수 없습니다. 속성 및 메서드

설명:

메서드를 생성할 때 지정하지 않으면 기본적으로 공개로 설정됩니다.

<?php
 class EMBA_student  // 声明EMBA学生类
      {
          //用private来定义私有类的属性
          private $no; //序号
          private $name; // 姓名
          private $gender; //性别
          private $age; //年龄

          //方法
          //方法1 ,私有方法,输出年龄

       private   function show_age()
          {

  echo"我的年龄是:$this->age<br />";

              }
//方法2,公有方法,回答年龄
public function ask_age()
{
    $this->show_age();
    }
//方法3,设置数据
function set_data($arr){
    $this->no=$arr["no"];
        $this->name=$arr["name"];
            $this->gender=$arr["gender"];
                $this->age=$arr["age"];
    }
          }

 //实例化一个对象
 $s=new EMBA_student;
 $arr=array("no"=>"1","name"=>"Qian Zhang","gender"=>"Female","age"=>"33","department"=>"商业营销");
 $s->set_data($arr);

//echo $s->age;//Fatal error: Cannot access private property EMBA_student::$age in C:\xampp\htdocs\v\v.php on line 47
//$s->show_age(); //Fatal error: Call to private method EMBA_student::show_age() from context &#39;&#39; in C:\xampp\htdocs\v\v.php on line 48

 $s->ask_age();

  ?>

결과:

我的年龄是:33

보충: self와 parent의 차이점

a) 이 두 개체는 일반적으로 하위 클래스에서 사용됩니다. 주요 차이점은 self는 상위 클래스에서 공개 또는 보호 속성을 호출할 수 있지만 부모는 호출할 수 없다는 것입니다.

b).self:: $this와 달리 $this는 현재 클래스의 정적 멤버(메서드 및 속성)를 나타냅니다. 현재 개체를 나타냅니다

추천 학습: "

PHP 비디오 튜토리얼

"

위 내용은 PHP의 클래스 메소드에 대한 액세스 권한은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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