Home  >  Article  >  Backend Development  >  PHP object-oriented (OOP) programming complete tutorial: 5. How to instantiate objects?

PHP object-oriented (OOP) programming complete tutorial: 5. How to instantiate objects?

WBOY
WBOYOriginal
2016-08-08 09:30:081042browse

We said above that the unit of an object-oriented program is an object, but objects are instantiated through classes. Now that our class has been declared, the next step is to instantiate the object.

After defining the class, we use the new keyword to generate an object.

$Object name = new Class name();


<?php
class Person
{
    //下面是人的成员属性
    var $name; //人的名子
    var $sex; //人的性别
    var $age; //人的年龄

    //下面是人的成员方法
    function say() { //这个人可以说话的方法
        echo "这个人在说话";
    } 

    function run() { //这个人可以走路的方法
        echo "这个人在走路";
    }
}

$p1=new Person();
$p2=new Person();
$p3=new Person();
?>


$p1=new Person();

This code is the process of generating instance objects through classes. $p1 is the name of the object we instantiate. Similarly, $p2 and $p3 are also the names of the objects we instantiate. A class can instantiate multiple objects. Each object They are all independent. The above code is equivalent to the example of 3 people. There is no connection between each person. It can only mean that they are all human beings. Each person has his own name, gender and age attributes. Everyone has their own attributes. There are ways to talk and walk. As long as they are member attributes and member methods reflected in the class, the instantiated object will contain these attributes and methods.

Like integers and floating-point types in PHP, objects are also a data class. They are used to store different types of data. They must be loaded into memory during operation. So how are objects reflected in memory? What about? Logically speaking, memory is roughly divided into 4 segments, the stack space segment, the heap space segment, the code segment, and the initialized static segment. Different declarations in the program are placed in different memory segments. The stack space segment is used for storage. Data types of the same space length and occupying small space, such as integers 1, 10, 100, 1000, 10000, 100000, etc. occupy the same length of space in the memory, and are all 64 bits and 4 bytes. So where should the data of a data type that has a variable length and takes up a lot of space be placed in that memory segment? Such data is placed in the heap memory. Stack memory can be directly accessed, while heap memory cannot be directly accessed. For our object, it is a large data type and takes up space of a variable length. Therefore, the object is placed in the heap, but the object name is placed in the stack, so that the object can be used through the object name. .

$p1=new Person();

For this code, $p1 is the object name in the stack memory, and new Person() is the real object in the heap memory. Please see the figure below for details:


As can be seen from the above picture, $p1=new Person(); the right side of the equal sign is the real object instance. The entity in the heap memory. There are 3 times of new Person() in the above picture, so 3 spaces will be opened in the heap. , generate 3 instance objects, each object is independent of each other and uses its own space. In PHP, as long as a new keyword appears, an object will be instantiated and an own space will be opened in the heap. space.

Each instance object in the heap stores attributes. For example, the instance objects in the heap now store name, gender, and age. Each attribute in turn has an address.

$p1=new Person(); The left side of the equal sign $p1 is a reference variable. The first address of the object is assigned to the reference variable "$p1" through the assignment operator "=", so $p1 stores the first address of the object. Variable, $p1 is placed in the stack memory. $p1 is equivalent to a pointer pointing to an object in the heap, so we can operate the object through the reference variable $p1. Usually we also call the object reference an object.


The above introduces the complete tutorial of PHP object-oriented (OOP) programming: 5. How to instantiate an object?, including aspects of the content. I hope it will be helpful to friends who are interested in PHP tutorials.

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