首頁  >  文章  >  後端開發  >  php中類別的方法的存取權限有哪些

php中類別的方法的存取權限有哪些

青灯夜游
青灯夜游原創
2022-02-18 11:24:483714瀏覽

php中類別方法的存取權限有三種:1、公有型別(public),在類別的內部、子類別中或類別的外部都可以使用,不受限制;2、受保護類型( protected);3、私有類型(private),只能在類別的內部使用,在類別的外部或子類別中都無法使用。

php中類別的方法的存取權限有哪些

本教學操作環境:windows7系統、PHP7.1版、DELL G3電腦

類別中的成員方法

在類別中定義的函數稱為成員方法。函數和成員方法唯一的差別就是,函數實作的是某個獨立的功能,而成員方法是實作類別中的一個行為,是類別的一部分。

可以在類別中宣告多個成員方法,成員方法的宣告和函數的宣告完全一樣,只不過在宣告成員方法時可以在function關鍵字的前面加一些存取權限修飾符來控制訪問權限,例如public、private、protected 等。

方法的存取權

有三種存取權限分別是:

public:公有類型,在類別的內部、子類別或類別的外部都可以使用,不受限制

特點:外部可調用,內部可調用,子類別可調用

在子類中可以透過self::var呼叫public方法或屬性,parent::method呼叫父類別方法

在實例中可以能過$obj->var 來呼叫public類型的方法或屬性

protected:受保護類型,在類別的內部和子類別中可以使用,但不能在類別的外部使用

特徵:外部不可調用,內部可調用子類可以呼叫

在子類別中可以透過self::var呼叫protected方法或屬性,parent::method呼叫父類別方法

在實例中不能透過$obj->var 來呼叫protected類型的方法或屬性

private:私有類型,只能在類別的內部使用,在類別的外部或子類別中都無法使用。

特點:外部不可調用,內部可調用,子類別不可調用

該類型的屬性或方法只能在該類別中使用,在該類別的實例、子類別中、子類別的實例中都無法呼叫私有類型的屬性與方法

說明:

在建立方法時,如果沒有指明,預設均為public。

<?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可以呼叫父類別中的公有或受保護的屬性,但parent不可以呼叫

b).self:: 它表示目前類別的靜態成員(方法與屬性) 與$ this 不同,$this是指當前物件

推薦學習:《PHP影片教學

以上是php中類別的方法的存取權限有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn