您好,欢迎访问一九零五行业门户网

PHP的privata权限控制

这篇文章介绍的内容是关于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,'<br >'; //钱定义为私有属性,在类human{}外面调用,调用失败 //echo $lisi->money; //$lisi-money = 500; echo $lisi->showmoney(); echo '<br >';/* showmoney是公共的,在此行可以调用. showmoney中的 return $this->money; 这一句运行的环境是在 类{}的内部,因此有权限访问 money属性 *///$lisi->secret(); //报错$lisi->tellme(); // 可以调用,因为在通过函数在类内调用的echo '<hr >';
/*
总结: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),'<br >'; //1000// 让李四去改变张三的钱$lisi->setmoney($zhangsan); //减500echo $lisi->getmoney($zhangsan),'<br >'; //剩500print_r($zhangsan);
/*
奇怪之处在于,
zhangsan的钱,应该有zhangsan来调用getmoney和setmoney才能影响.
但是与我们讲private权限控制时的原则是符合的:
即:
调用的getmoney() public 有权
getmoney又在类{}内,有权读取私有属性money
调用的setmoney() public 有权
setmoney又在类{}内,有权修改zhangsan的私有属性money
*/
相关推荐:
php this绑定
以上就是php的privata权限控制 的详细内容。
其它类似信息

推荐信息