Der Code lautet wie folgt:
/*
* Kapselung: eines der drei Hauptmerkmale der objektorientierten
*
* 1. Es ist Kapseln Sie die Mitglieder (Eigenschaften, Methode) in einer unabhängigen identischen Einheit und verbergen Sie die internen Details des Objekts so weit wie möglich
* Zugriffsberechtigungsmodifikator öffentlich geschützt privat
* privat: privat, mit diesem Schlüsselwort geänderte Mitglieder können darf nur im Objekt verwendet werden Interner Zugriff (nur Zugriff mit $this)
*
* Attribute können gekapselt werden:
* Solange eine Variable in mehreren Methoden verwendet werden muss, deklarieren Sie diese Variable als Mitgliedsattribut, das direkt in diesem Objekt verwendet werden kann Die
*
* Mitgliedsattribute werden in allen Methoden in diesem Objekt verwendet, was den globalen Variablen in diesem Objekt entspricht. Das Ausführungsverhalten der Methode ist Ändern Sie die Funktion des Objekts
*
* Wenn der Wert des Mitgliedsattributs abnormal ist, ist die von der Methode ausgeführte Funktion nicht normal
*
* Funktion: Das Objekt muss nicht angegeben werden Ändern oder lesen Sie den Wert extern
* 1. Kapseln Sie
* und stellen Sie eine öffentliche Methode bereit (Sie können die Zuweisung und Werterfassung von Objektmitgliedsattributen über die Methode steuern)
*
*
* Methoden können auch gekapselt werden
*
* Funktion:
* 1. Private Modifikation verwenden, sodass sie nur intern verwendet werden kann
*
* 2. Es gibt 100 Methoden in einer Klasse , kapselnd 95 (Methoden, die die anderen 5 bedienen), können nur 5 Methoden verwendet werden
*
* 100 Mitgliedsattribute, die alle Werte annehmen dürfen und nicht geändert werden können; kann geändert werden, Der Wert kann nicht abgerufen werden //In diesem Fall ist es bequemer, die folgenden Methoden zu verwenden
* Magische Methoden im Zusammenhang mit der Kapselung:
*
* __set();//Wann Direktes Festlegen des [privaten] Mitgliedsattributwerts, die automatisch aufgerufene Methode
* __get();// ist die Methode, die automatisch aufgerufen wird, wenn der [private] Mitgliedsattributwert direkt abgerufen wird
* __isset();/ /wird direkt verwendet isset() um das Objekt anzuzeigen Diese Methode wird automatisch aufgerufen, wenn private Attribute vorhanden sind
* __unset();//Diese Methode wird automatisch aufgerufen, wenn unset() direkt verwendet wird, um private Attribute in einem Objekt zu löschen
*
*
*
*
*
*
*
*/
class Person{
//x kapselt Mitgliedsattribute und nicht muss außerhalb des Objekts
private $name;
private $sex;
private __unset($proName){
unset($this->$proName) geändert werden );
}
//Es ist ein direktes Ansichtsobjekt. Diese Methode wird automatisch aufgerufen, wenn das private Attribut vorhanden ist
//Verwendung von __isset($proName), $proName stellt den Attributnamen
private dar function __isset($proName){
return isset($this-> ;$proName);//isset() gibt zurück, ob es existiert
}
function __construct($name,$age,$sex) {
$this->name=$name;
$ this->age=$age;
$this->sex=$sex=$sex; Beim Abrufen privater Mitgliedsattribute wird diese Methode automatisch aufgerufen
private function __get( $proName)
{
//Kontrollieren Sie den erhaltenen Wert
if($proName=="age"){
if($this-age>40)
return $this- >age-10;}
return $this->$proName;
//Bei der Einstellung privat Mitgliedseigenschaften, diese Methode wird automatisch aufgerufen
private function __set( $proName,$proValue){
//$proName stellt den Mitgliedsattributnamen dar, $proValue stellt den Mitgliedsattributwert dar
//Kontrollieren Sie die Einstellung Bereich
if($proName=="age"){
if($proValue > 100 || $proValue<0)
return;
}
$this->$ proName=$proValue;
}
//Stellen Sie öffentliche Methoden bereit, um den Wert des Mitgliedsattributs festzulegen
function setAge($age){
//Kontrollieren Sie den Altersbereich und erhöhen Sie die Sicherheit
if($age > 100 || $age < 0 )
return;
$this->age=$age;}
/Stellen Sie öffentliche Methoden bereit, um den Wert von zu erhalten Mitgliedsattribute
function getAge(){
//Steuern Sie den Altersbereich
if($this->age < 30)
return $this->age
else if($this->age<40)
return $this->age -5;
else if($this->age<50)
return $this->age;
else
return $this->age-15;
bereitgestellte öffentliche Methode an}
function say(){
echo „Mein Name: {$this->name}, mein Alter: {$this->age}, mein Nachname: {$ this->sex}
";
//Zugriff auf die gekapselte run()-Methode
$this-run() ;
}
private function run(){
echo '111111111111
'
function eat(){
}
//Destruktormethode
function __destruct(){
}
}
$p1=new Person("zhangsan",25,"male");
$p2=new Person; ;
//$p1->age=-50;//Da auf das Alter nach Belieben von außen zugegriffen werden kann, sind die Mitgliedsattribute aus Sicherheitsgründen gekapselt.
$p1->setAge(30);//Legen Sie den Mitgliedsattributwert über die Methode fest
$p1->getAge();//Erhalten Sie den Mitgliedsattributwert über die Methode
// Durch Hinzufügen der magischen Methode __set($proName,$proValue) __get($proName) können Sie Mitgliedsattribute direkt aufrufen
$p1->say();//Sie können
$p1-> ; run();//Private Methoden können nicht direkt aufgerufen werden
//Löschen Sie den Namen in $p1
unset($p1->name);//Bestimmen Sie, ob der Name existiert
if (isset($p1->name)){
echo „Existiert
“;
}else{
echo „Es gibt kein solches Mitglied
}
?>