Home >Backend Development >PHP Tutorial >PHP object-oriented guide (2) Instantiating objects and using object members
5. How to instantiate objects
We said above that the unit of an object-oriented program is an object, but objects are instantiated through classes. Since
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.
Code snippet
$对象名称= new 类名称(); <?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,
$p3 are also the names of the objects we instantiate. A class can be instantiated. Multiple objects, each object is 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. , attributes of gender and age, everyone has a way of talking and walking. As long as the member attributes and member methods are reflected in the class, the instantiated object will contain these attributes and methods.
Objects in PHP, like integers and floating point types, are also a data class, which are used to store different types of data.
They must be loaded into memory for use during runtime, so the objects in the memory are How is it reflected? Memory is logically divided into 4 segments, stack space segment, heap space segment, code segment, and initialization static segment. Different declarations in the program are placed in different memory segments. The stack space segment occupies the same storage space. Data types that are long and occupy 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 words. Festival. So, where is the data type whose data length is variable and takes up a lot of space placed in that segment of the memory? Such data is placed in the heap memory. Stack memory can be directly accessed, while heap memory is memory that cannot be directly accessed. For our object, it is a large data type and it takes up a variable length of space. Therefore, the object is placed in the heap, but the object name is placed in the stack. In this way, the object name can be used
to use the object.
$p1=new Person();
For this code, $p1 is the object name in the stack memory, new Person() is the real object in the heap memory
, please see the picture below for details:
As can be seen from the picture above, $p1=new Person(); the right side of the equal sign is the real object instance, the entity in the heap memory.
There are a total of 3 times of new Person() in the picture above, so 3 will be opened in the heap space, generating 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 opened in the heap. A space of your own.
Each instance object in the heap stores attributes. For example, the instance objects in the heap now contain last name, gender and age. Each attribute in turn has an address.
$p1=new Person(); The right 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 is the first address of the stored object. The address 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.
6. How to use the members in the object
As seen above, there are two types of members in the PHP object, one is the member attribute and the other is the member method. We have already declared the object. $p1=new Person(); How to use the members of the object? If you want to access the members of the object, you need to use a
special operator "->" to complete the access of the object members:
Object->Properties $p1->name; $p2->age; $p3 ->sex;
Object->Method $p1->say(); $p2->run();
As an example below:
Code snippet
<?php class Person{ //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say(){ //这个人可以说话的方法 echo "这个人在说话"; } function run(){ //这个人可以走路的方法 echo "这个人在走路"; } } $p1=new Person(); //创建实例对象$p1 $p2=new Person(); //创建实例对象$p2 $p3=new Person(); //创建实例对象$p3 //下面三行是给$p1对象属性赋值 $p1->name=”张三”; $p1->sex=”男”; $p1->age=20; //下面三行是访问$p1对象的属性 echo “p1对象的名字是:”.$p1->name.”<br>”; echo “p1对象的性别是:”.$p1->sex.”<br>”; echo “p1对象的年龄是:”.$p1->age.”<br>”; //下面两行访问$p1对象中的方法 $p1->say(); $p1->run(); //下面三行是给$p2对象属性赋值 $p2->name=”李四”; $p2->sex=”女”; $p2->age=30; //下面三行是访问$p2对象的属性 echo “p2对象的名字是:”.$p2->name.”<br>” echo “p2对象的性别是:”.$p2->sex.”<br>”; echo “p2对象的年龄是:”.$p2->age.”<br>”; //下面两行访问$p2对象中的方法 $p2->say(); $p2->run(); //下面三行是给$p3对象属性赋值 $p3->name=”王五”; $p3->sex=”男”; $p3->age=40; //下面三行是访问$p3对象的属性 echo “p3对象的名字是:”.$p3->name.”<br>”; echo “p3对象的性别是:”.$p3->sex.”<br>”; echo “p3对象的年龄是:”.$p3->age.”<br>”; //下面两行访问$p3对象中的方法 $p3->say(); $p3->run(); ?>