ホームページ  >  記事  >  バックエンド開発  >  PHPプライベート権限制御

PHPプライベート権限制御

不言
不言オリジナル
2018-04-26 10:55:471739ブラウズ

この記事では、特定の参考値を持つ PHP のプライベート パーミッション コントロールを紹介します。必要な友達はそれを参照してください

// プライベート パーミッション コントロール

// === コード パート 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;;

/*
概要: プライベート権限制御

はクラス {} 内でのみ呼び出すことができます。
{} の外では調整できません
*/



// 権限制御のバグ

/ / ===コードパート 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 と setMoney を呼び出すことによって影響を受けるはずです。

しかし、プライベート権限制御について話すとき、原則は一貫しています:
つまり:
getMoney() を呼び出す public は、
getMoney を実行する権利を持ち、

getMoney はクラス {} に属し、私有財産の Money を読み取る権利を持ちます


public と呼ばれる setMoney() は、

setMoney を実行する権利を持ちますクラスは {} 内にあり、zhangsan のプライベート属性 Money

*/


を変更する権利があります。関連する推奨事項:

PHP このバインディング

🎜

以上がPHPプライベート権限制御の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。