Home >Backend Development >PHP Tutorial >Photoshop learning experience PHP learning notes Application of one of the three major object-oriented features in PHP [encapsulation]
Copy the code 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 hide the internal details of the object as much as possible
* Access permission modifier public protected private
* private: private, members modified with this keyword can only be accessed within the object (only accessed with $this )
*
* Attributes 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, equivalent The global variables in this object
*
* The member attributes will all be used in the method. The change of the member attribute value is actually changing the execution behavior of the method, that is, changing the function of the object
*
* If the value of the member attribute is not Normal, the function executed by the method is abnormal
*
* Function: No need to change or read its value outside the object
* 1. Encapsulate
* and then provide a public method (assign the object member attributes through the method and the value can be controlled)
*
*
* 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 , encapsulating 95 (methods that serve the other 5), only 5 methods can be used
*
* 100 member attributes, all allow values to be obtained, and the values cannot be changed; or the values can only be changed, but the values cannot be obtained/ /In this case, it is more convenient to use the following methods
* Magic methods related to encapsulation:
*
* __set();//It is a method that is automatically called when directly setting the [private] member attribute value
* __get() ;//This is a method that is automatically called when directly obtaining [private] member attribute values
* __isset();//This method is automatically called when directly using isset() to check whether the private attributes in the object exist
* __unset( );//It is a method automatically called when unset() is used directly to delete private properties in an object
*
*
*
*
*
*
*
*/
class Person{
//x encapsulates member attributes, No need to change outside the object
private $name;
private $age;
private $sex;
private __unset($proName){
unset($this->$proName);
}
//View the object directly This method is automatically called when the private attribute exists in
//Usage 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 obtaining private member attributes, this method is automatically called
private function __get($proName)
{
//Control the obtained value
if($pr
if($ this-age>40)
return $this->age-10;
}
return $this->$proName;
}
//When setting private member properties, 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($pr
if($proValue > 100 || $proValue<0)
return;
}
$this->$pr
}
//Provide public methods to set the value of member attributes
function setAge($age){
//Control the age range and increase security
if($age > 100 || $age < 0 )
return;
$this->age=$age;
}
//Provide public methods to get the value of member attributes
function getAge(){
//Control acquisition Age range
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 "I My name: {$this->name}, my age: {$this->age}, my last name: {$this->sex}
";
//Access encapsulated The 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 the 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 It 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
";
}
?>
The above introduces the photoshop learning experience, php learning notes, and the application of one of the three major object-oriented features in PHP [encapsulation], including the photoshop learning experience. I hope it will be helpful to friends who are interested in PHP tutorials.