The code is as follows:
/*
* Encapsulation: one of the three major characteristics of object-oriented
*
* 1. It is to combine the members (properties, methods) of the object into an independent and identical unit, and try to May hide internal details of the object
* Access permission modifier public protected private
* private: private, members modified with this keyword can only be accessed within the object (only accessed with $this)
*
* Properties can be encapsulated :
* As long as a variable needs to be used in multiple methods, declare this variable as a member attribute, which can be used directly in all methods in this object
*
* Member attribute is equivalent to a global variable in this object
*
* Member attributes will be used in methods. Changes in member attribute values actually change the execution behavior of the method, that is, change the function of the object
*
* If the value of the member attribute is abnormal, the function of the method execution will be changed. Abnormal
*
* Function: No need to change or read its value outside the object
* 1. Encapsulate
* and then provide a public method (the object member attributes can be controlled by assigning and taking values through the method)
*
*
* Methods can also be encapsulated
*
* Function:
* 1. Use private modification so that it can only be used internally
*
* 2. There are 100 methods in a class, 95 of which are encapsulated (for others 5 service methods), only 5 methods can be used
*
* 100 member attributes, all let the value be obtained, and the value cannot be changed; or the value can only be changed, but the value cannot be obtained // In this case, use the following method More convenient
* Magic methods related to encapsulation:
*
* __set();//It is a method that is automatically called when directly setting [private] member attribute values
* __get();//It is to directly obtain [private] ] member attribute value, the method is automatically called
* __isset();//It is to directly use isset() to check whether the private attribute in the object exists, and this method is automatically called
* __unset();//It is to use unset directly () Method automatically called when deleting private attributes in an object
*
*
*
*
*
*
*
*/
class Person{
//x encapsulates member attributes and does not need to be changed outside the object
private $name;
private $age;
private $sex;
private __unset($proName){
unset($this->$proName);
}
//When directly checking whether the private attribute in the object exists, automatically Call this method
//Use of __isset($proName), $proName represents the attribute name
private function __isset($proName){
return isset($this->$proName);//isset() returns whether it exists
}
function __construct($name,$age,$sex){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
}
//When getting a private member attribute, this method is automatically called
private function __get($proName)
{
//Control the value obtained
if($proName=="age"){
if($this -age>40)
return $this->age-10;
}
return $this->$proName;
}
//When setting private member attributes, this method is automatically called
private function __set( $proName,$proValue){
//$proName represents the member attribute name, $proValue represents the member attribute value
//Control the setting range
if($proName=="age"){
if($proValue > 100 | | $proValue<0)
return;
}
$this->$proName=$proValue;
}
//Provide public methods to set the value of member attributes
function setAge($age){
//Control age Range, increase security
if($age > 100 || $age < 0 )
return;
$this->age=$age;
}
//Provide public methods to obtain the value of member attributes
function getAge(){
//Control the range of age
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;
Provide public methods to}
function say(){
echo "My name: {$this->name}, my age: {$this->age}, my surname: {$this->sex}< br>";
//Access the encapsulated run() method
$this-run();
}
private function run(){
echo '111111111111
'
}
function eat(){
}
//Destruction method
function __destruct(){
}
}
$p1=new Person("zhangsan",25,"male");
$p2=new Person;
$p3=new Person;
//$p1->age=-50;//Because age can be accessed from the outside at will, the member attributes are encapsulated for security.
$p1->setAge(30);//Set the member attribute value through the method
$p1->getAge();//Get the member attribute value through the method
//By adding the magic method_ _set($proName,$proValue) __get($proName), you can directly call member attributes
$p1->say();//You can call
$p1->run();//Private method Cannot be called directly
//Delete the name in $p1
unset($p1->name);
//Determine whether the name exists
if(isset($p1->name)){
echo "Exists< br>";
}else{
echo "There is no such member
";
}
?>