search
HomeBackend DevelopmentPHP TutorialPHP object-oriented guide (5) Encapsulation_PHP tutorial

PHP object-oriented guide (5) Encapsulation_PHP tutorial

Jul 21, 2016 pm 03:43 PM
phpComplete strategyandobjectencapsulationAttributesyescharacteristicofprogrammingFor

9. Encapsulation
Encapsulation is one of the three major characteristics of object-oriented programming. Encapsulation is to combine the properties and services of an object into an
independent and identical unit, and try to Concealing the internal details of an object has two meanings: 1. Combining all the attributes and all services of the object to form an indivisible independent unit (i.e. object). 2. Information hiding, that is, hiding the internal details of the object as much as possible, forming a boundary [or forming a barrier] to the outside world, and retaining only a limited external interface to connect it with the outside world. The reflection of the principle of
encapsulation in software is that it requires that parts other than the object cannot access the internal data
(attributes) of the object at will, thereby effectively avoiding the "cross-infection" of external errors and making it Software errors can be localized, greatly reducing the difficulty of error detection and troubleshooting.
Let’s use an example to illustrate. Suppose a person’s object has attributes such as age and salary. Such personal privacy attributes
are not accessible to other people. If you don’t use encapsulation, Then others can get it if they want to know, but
if you encapsulate it, others will have no way to obtain the encapsulated attributes. Unless you tell it yourself, there is no way for others to
get it.
For another example , every personal computer has a password. If you don’t want others to log in at will, copy and
paste it into your computer. Also, for objects like people, the attributes of height and age can only be increased by oneself, and cannot be assigned values ​​arbitrarily
by others, etc.
Use the private keyword to encapsulate properties and methods:
Original members:
var $name; //The name of the declarant
var $sex; //The gender of the declarant
var $age; //Declare the person’s age
function run(){… … .}
Change to encapsulated form:
private $name; //Use the private keyword for the person’s name Encapsulate
private $sex; //Encapsulate the person’s gender using the private keyword
private $age; //Encapsulate the person’s age using the private keyword
private function run(){… … } //Use the private keyword to encapsulate a person’s walking method
Note: As long as there are other keywords in front of the member attributes, the original keyword "var" must be removed.
You can encapsulate human members (member attributes and member methods) through private. The members in the package cannot
be directly accessed from outside the class, only the object itself can access it; the following code will generate an error:
Code snippet



Copy code

The code is as follows: class Person{ //The following are the member attributes of the person
private $name; //The name of the person is encapsulated in private
private $sex; //A person’s gender, encapsulated by private
private $age; //Age of a person, encapsulated by private
//How this person can speak
function say(){
echo "My name is: ".$this->name." Gender: ".$this->sex." My age is: ".$this->age. "
";
}
//The method by which this person can walk is encapsulated privately
private function run(){
echo "This person is walking";
}
}
//Instantiate a person’s instance object
$p1=new Person();
//Trying to assign a value to a private attribute, an error will occur
$ p1->name="Zhang San";
$p1->sex="Male";
$p1->age=20;
//Trying to print private attributes, the result The error will occur
echo $p1->name.”
”;
echo $p1->sex.”
”;
echo $p1->age. "
"
//When trying to print private member methods, an error will occur
$p1->run();


The output result is:
Fatal error: Cannot access private property Person::$name
Fatal error: Cannot access private property Person::$sex
Fatal error: Cannot access private property Person::$age
Fatal error: Cannot access private property Person::$name
Fatal error: Call to private method Person::run() from context ''
As you can see from the above example, private members cannot be accessed externally because Private members can only be accessed within this object
. For example, if the $p1 object wants to share its private attributes, it accesses the private attributes in the say() method. This is OK. (No access control is added. The default is public and can be accessed from anywhere.)
Code snippet



Copy code

The code is as follows :
//This person can speak, speak his own private attributes, and you can also access private methods herefunction say(){ echo "My name is : ".$this->name." Gender: ".$this->sex." My age is: ".$this->age."
";
//In Private methods can also be accessed here
//$this->run();
}


Because the member method say() is public, we can call the say() method outside the class. Change the above
code;
Code snippet
Copy code The code is as follows:

class Person{
//The following are the member attributes of the person
private $name; //The name of the person, Encapsulated by private
private $sex; //The gender of the person is encapsulated by private
private $age; //The age of the person is encapsulated by private
//Define a constructor The parameters are assigned to the private attributes name $name, gender $sex and age $age
function __construct($name, $sex, $age){
//The $name passed in through the constructor method is assigned to the private member The attribute $this->name is assigned an initial value
$this->name=$name;
//The $sex passed in through the construction method is assigned an initial value to the private member attribute $this->sex Value
$this->sex=$sex;
//The $age passed in through the constructor is assigned an initial value to the private member property $this->age
$this->age =$age;
}
//The way this person can speak, speak his own private properties, you can also access the private methods here
function say(){
echo "My name Name: ".$this->name." Gender: ".$this->sex." My age is: ".$this->age."
";
}
}
//Create three objects $p1, p2, $p3 through the construction method, and pass in three different actual parameters: name, gender and age
$p1=new Person("Zhang San ","Male", 20);
$p2=new Person("李思","Female", 30);
$p3=new Person("王五","Male", 40) ;
//The following accesses the speaking method in the $p1 object
$p1->say();
//The following accesses the speaking method in the $p2 object
$p2->say ();
//The following accesses the speaking method in the $p3 object
$p3->say();

The output result is:
My name is: Zhang San Gender: Male My age is: 20
My name is: Li Si Gender: Female My age is: 30
My name is: Wang Wu Gender: Male My age is: 40
Because the constructor is the default public method (do not set the constructor to be private), it can be accessed from outside the class, so you can use the constructor to create objects. In addition, the constructor is also a function inside the class. , so you can use the construction method to assign initial values ​​to private properties. The Say() method is public by default, so it can also be accessed from the outside and says
its own private attributes.
We can see from the above example that private members can only be used inside the class and cannot be directly
accessed by outside the class. However, they are accessible within the class, so sometimes We need to assign values ​​to private properties and read them out
outside the class, that is, to provide some accessible interfaces outside the class. In the above example, the construction method is a form of assignment
, but the construction The method only assigns value when creating the object. If we already have an existing object and want to assign a value to this existing object, at this time, if you also use the constructor method to pass value, then create A
new object is created, which is not the existing object. Therefore, we need to make some
interfaces for private attributes that can be accessed externally. The purpose is to change and access the value of the attributes when the object exists. However, it should be noted that only external
needs to be accessed. This is done only for the properties that have been changed. Properties that do not want to be accessed by the outside do not have such an interface. In this way, the purpose of encapsulation can be achieved. All functions are completed by the object itself, providing as few operations as possible to the outside world.
If you provide an interface outside the class, you can provide setting methods and get methods for private properties outside the class to operate private
properties. For example:
Code snippet



Copy code
The code is as follows: prvate $age; //Private attribute agefunction setAge($age) {
//Provided externally A public method for setting age
if($age130) //When assigning values ​​to attributes, in order to avoid illegal values ​​​​are set to the attribute
return;
$this-> ;age=$age;
}
function getAge(){ //Provide a public method for obtaining age externally
return($this->age);
}


The above method is to set and get the value for a member attribute. Of course, you can also use the same method for each attribute to
assign and get the value to complete the access work outside the class.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/320648.htmlTechArticle9. Encapsulation Encapsulation is one of the three major characteristics of object-oriented programming. Encapsulation is the Properties and services are combined into a single identical unit and the object's internals are hidden as much as possible...
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
PHP in Action: Real-World Examples and ApplicationsPHP in Action: Real-World Examples and ApplicationsApr 14, 2025 am 12:19 AM

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP: Creating Interactive Web Content with EasePHP: Creating Interactive Web Content with EaseApr 14, 2025 am 12:15 AM

PHP makes it easy to create interactive web content. 1) Dynamically generate content by embedding HTML and display it in real time based on user input or database data. 2) Process form submission and generate dynamic output to ensure that htmlspecialchars is used to prevent XSS. 3) Use MySQL to create a user registration system, and use password_hash and preprocessing statements to enhance security. Mastering these techniques will improve the efficiency of web development.

PHP and Python: Comparing Two Popular Programming LanguagesPHP and Python: Comparing Two Popular Programming LanguagesApr 14, 2025 am 12:13 AM

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

The Enduring Relevance of PHP: Is It Still Alive?The Enduring Relevance of PHP: Is It Still Alive?Apr 14, 2025 am 12:12 AM

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP's Current Status: A Look at Web Development TrendsPHP's Current Status: A Look at Web Development TrendsApr 13, 2025 am 12:20 AM

PHP remains important in modern web development, especially in content management and e-commerce platforms. 1) PHP has a rich ecosystem and strong framework support, such as Laravel and Symfony. 2) Performance optimization can be achieved through OPcache and Nginx. 3) PHP8.0 introduces JIT compiler to improve performance. 4) Cloud-native applications are deployed through Docker and Kubernetes to improve flexibility and scalability.

PHP vs. Other Languages: A ComparisonPHP vs. Other Languages: A ComparisonApr 13, 2025 am 12:19 AM

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP vs. Python: Core Features and FunctionalityPHP vs. Python: Core Features and FunctionalityApr 13, 2025 am 12:16 AM

PHP and Python each have their own advantages and are suitable for different scenarios. 1.PHP is suitable for web development and provides built-in web servers and rich function libraries. 2. Python is suitable for data science and machine learning, with concise syntax and a powerful standard library. When choosing, it should be decided based on project requirements.

PHP: A Key Language for Web DevelopmentPHP: A Key Language for Web DevelopmentApr 13, 2025 am 12:08 AM

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment