Explication détaillée des bugs dans le contrôle des autorisations PHP

小云云
Libérer: 2023-03-22 21:14:02
original
1427 Les gens l'ont consulté

Cet article partage principalement avec vous l'explication détaillée des bugs dans le contrôle des autorisations PHP, principalement sous forme de texte et de code. J'espère qu'il pourra aider tout le monde.

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
Copier après la connexion
Copier après la connexion
/* 
按理来说,李四不应该有权直接引用 张三私有的
但是,在上面的代码中,李四却显然引用和改张三的钱. 
这是因为: 
PHP在实现上,并不是以对象为单位来控制的权限. 
而是以类为单位,来控制的权限.
所以我们强调的是类内,类外,而不是对象内,对象外. 
*/
/* 
$lisi–>类–>Human类 
$lisi->setMoney()函数,也在Human类中, 
在同一个类内部,可以调用.
这也说明了,确实是以类为单位的. 
*/
Copier après la connexion
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
Copier après la connexion
Copier après la connexion

/*
Logiquement parlant, Li Si ne devrait pas avoir le droit de citer directement le privé de Zhang San

Cependant, dans le code ci-dessus, Cependant , Li Si a évidemment cité et changé l'argent de Zhang San
C'est parce que :
Dans l'implémentation de PHP, les autorisations ne sont pas contrôlées en unités d'objets
Mais en unités de classes, les autorisations sont contrôlées. .

Donc ce que nous insistons est à l'intérieur de la classe et à l'extérieur de la classe, pas à l'intérieur de l'objet et à l'extérieur de l'objet
*/

/*
$lisi–> class –>Classe humaine
La fonction $lisi->setMoney() est également dans la classe Human
Elle peut être appelée au sein de la même classe.

Cela montre également qu'elle l'est bien. basé sur la classe est l'unité
*/

Recommandations associées :

Tutoriel PHP de contrôle des autorisations privées orientées objet

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal