>  기사  >  백엔드 개발  >  PHP 권한 제어 버그에 대한 자세한 설명

PHP 권한 제어 버그에 대한 자세한 설명

小云云
小云云원래의
2018-03-31 13:07:581425검색

이 문서는 주로 텍스트와 코드 형식으로 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),&#39;<br >&#39;; //1000// 让李四去改变张三的钱$lisi->setMoney($zhangsan); //减500echo $lisi->getMoney($zhangsan),&#39;<br >&#39;; //剩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),&#39;<br >&#39;; //1000// 让李四去改变张三的钱$lisi->setMoney($zhangsan); //减500echo $lisi->getMoney($zhangsan),&#39;<br >&#39;; //剩500

/*
논리적으로 말하면 Li Si는 Zhang San의 개인 자금을 직접 인용할 권리가 없어야 합니다

그러나 위 코드에서 Li Si는 분명히 Zhang San의 돈을 인용하고 변경했습니다.
이유는 다음과 같습니다. PHP를 구현하면 권한은 객체 단위로 제어되지 않습니다.
하지만 권한은 클래스 단위로 제어됩니다.

그래서 우리가 강조하는 것은 객체 내부와 객체 외부가 아닌 클래스 내부와 외부입니다.


/*

$lisi–>Class–>Human class

$lisi->setMoney() 함수도 Human 클래스에 있고,
같은 클래스 내에서 호출할 수 있습니다.

이것도 이를 보여줍니다. 실제로 클래스를 기반으로 합니다.

*/


관련 권장 사항:

PHP 객체 지향 개인 권한 제어_PHP 튜토리얼

위 내용은 PHP 권한 제어 버그에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.