PHP的privata權限控制

不言
發布: 2023-03-24 20:32:02
原創
1789 人瀏覽過

這篇文章介紹的內容是關於PHP的privata權限控制,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

// private權限控制

// ===程式碼部分1===

class Human {
    public $mood = ''; // 心情,公有
    private $money = 1000; // 钱,私有

    public function showMoney() {
        return $this->money;
    }    private function secret() {
        echo '我小时候偷吃过一块肉';
    }    public function tellMe() {
        $this->secret();
    }
}
$lisi = new Human();
$lisi->mood = 'happy';
echo $lisi->mood,&#39;<br >&#39;;
//钱定义为私有属性,在类Human{}外面调用,调用失败
//echo $lisi->money;
//$lisi-money = 500;
echo $lisi->showMoney();
echo &#39;<br >&#39;;/*
showMoney是公共的,在此行可以调用.
showMoney中的 return $this->money;
这一句运行的环境是在 类{}的内部,因此有权限访问 money属性
*///$lisi->secret(); //报错$lisi->tellMe(); 
// 可以调用,因为在通过函数在类内调用的echo &#39;<hr >&#39;;
登入後複製

/*  
總結:private權限控制

#只能在類別{}內呼叫.
走出了{},調不動了.  
*/



// 權限控制的bug

// ===程式碼部分2===

class Human2 {
    private $money = 1000;    public function getMoney($people) {
        return $people->money;
    }    public function setMoney($people) {
        $people->money -= 500;
    }
}$zhangsan = new Human2();$lisi = new Human2();//echo $lisi->money; 
//报错// 让李四去打探张三的钱echo $lisi->getMoney($zhangsan),&#39;<br >&#39;;
 //1000// 让李四去改变张三的钱$lisi->setMoney($zhangsan); 
 //减500echo $lisi->getMoney($zhangsan),&#39;<br >&#39;; 
 //剩500print_r($zhangsan);
登入後複製

/*
奇怪之處在於,
zhangsan的錢,應該有zhangsan來呼叫getMoney和s​​etMoney才能影響.

但是與我們講private權限控制時的原則是符合的:
即:
調用的getMoney() public 有權
getMoney又在類別{}內,有權讀取私有屬性money

呼叫的setMoney() public 有權
setMoney又在類別{}內,有權修改zhangsan的私有屬性money

#*/

相關推薦:

PHP this綁定

以上是PHP的privata權限控制的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板