이 문서는 주로 텍스트와 코드 형식으로 PHP 권한 제어의 버그에 대한 자세한 설명을 공유합니다. 모든 사람에게 도움이 되기를 바랍니다.
class Human { private $money = 1000; public function getMoney($people) { return $people->money; } public function setMoney($people) { $people->money -= 500; } }$zhangsan = new Human();$lisi = new Human();//echo $lisi->money; //报错// 让李四去打探张三的钱echo $lisi->getMoney($zhangsan),'<br >'; //1000// 让李四去改变张三的钱$lisi->setMoney($zhangsan); //减500echo $lisi->getMoney($zhangsan),'<br >'; //剩500
/* 按理来说,李四不应该有权直接引用 张三私有的 但是,在上面的代码中,李四却显然引用和改张三的钱. 这是因为: PHP在实现上,并不是以对象为单位来控制的权限. 而是以类为单位,来控制的权限. 所以我们强调的是类内,类外,而不是对象内,对象外. */ /* $lisi–>类–>Human类 $lisi->setMoney()函数,也在Human类中, 在同一个类内部,可以调用. 这也说明了,确实是以类为单位的. */
class Human { private $money = 1000; public function getMoney($people) { return $people->money; } public function setMoney($people) { $people->money -= 500; } }$zhangsan = new Human();$lisi = new Human();//echo $lisi->money; //报错// 让李四去打探张三的钱echo $lisi->getMoney($zhangsan),'<br >'; //1000// 让李四去改变张三的钱$lisi->setMoney($zhangsan); //减500echo $lisi->getMoney($zhangsan),'<br >'; //剩500
/*
논리적으로 말하면 Li Si는 Zhang San의 개인 자금을 직접 인용할 권리가 없어야 합니다
그러나 위 코드에서 Li Si는 분명히 Zhang San의 돈을 인용하고 변경했습니다.
이유는 다음과 같습니다. PHP를 구현하면 권한은 객체 단위로 제어되지 않습니다.
하지만 권한은 클래스 단위로 제어됩니다.
/*
$lisi->setMoney() 함수도 Human 클래스에 있고,
같은 클래스 내에서 호출할 수 있습니다.
이것도 이를 보여줍니다. 실제로 클래스를 기반으로 합니다.
관련 권장 사항:
위 내용은 PHP 권한 제어 버그에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!