Maison > Questions et réponses > le corps du texte
dôme de classe{
private $age;
public function __construct($age){
$this->age =$age;
}
public function __set($name,$value){
if($name =='âge')
{return false; gt;age=25;and
.., Dans les deux cas, les résultats de sortie doivent être la valeur par défaut 24, mais le résultat de
echo $obj-> age=25 est 25. L'âge a été modifié ? $obj->age=26; echo $obj->age; Il n'y a pas de problème avec la phrase ?
DayDayUp2017-08-12 16:38:41
class demo{ private $age; public function __construct($age){ $this->age =$age; } public function __set($name,$value){ if($name =='age'){ return false; } return $this->$name=$value; } } $obj =new demo(24); echo $obj->age=25; $obj->age=26; echo $obj->age;
Dans votre code, le deuxième écho ne doit pas être exécuté. Vous n'avez pas publié l'intégralité du code, car il vous indiquera que vous ne pouvez pas accéder aux propriétés privées
La différence entre les deux résultats de sortie est due à la façon dont vous écrivez. echo, echo a = 3 Cette façon d'écrire exécutera l'instruction d'affectation, mais que l'affectation soit réussie ou non, le nombre à droite du signe égal sera affiché à l'écran
1. Le premier écho $obj-. >age=25; exécute votre méthode set, on obtient que name est égal à age, et return false est exécuté, donc la valeur de l'attribut age n'est pas modifiée. Mais avec votre façon d'écrire, il affichera le 25 sur le côté droit de votre signe égal sur l'écran
2. La deuxième façon est la manière normale d'écrire, qui exécutera l'instruction d'affectation, puis jugera et retournera faux. , sans modifier la valeur de age, puis affichez la valeur de votre attribut age est toujours 24
DayDayUp2017-08-12 16:00:34
echo $obj->age=25 Cette déclaration est fausse. Vous n'avez pas modifié la valeur dans la classe. Vous venez de générer une valeur de 25.
1 Il devrait y avoir un problème dans votre méthode set. else, il semble qu'elle manque
2 Si vous souhaitez lire des attributs privés, vous devez écrire une autre méthode get
if($name =='age') {return false;} //没有else return $this->$name=$value; } } //正确代码 public function __set($name,$value){ if($name == 'age'){ echo 'age不允许修改'; }else{ return $this->$name = $value; } } public function __Get($name){ return $this->$name; }