微信扫一扫打赏支持

php课程 12-38 php的类的构造方法和析构方法怎么写

php课程 12-38 php的类的构造方法和析构方法怎么写

一、总结

一句话总结:a、__construct(参数){},__destruct(){},b、如果类中的一个方法和类名相同,则该方法为构造方法

 

 

1、$this->name和$this->$name的区别是什么?

前者是这个对象的属性,后者是这个对象的变量,所以对象调用属性的时候,属性前面不能加$

 

2、$user1=new Person()后面的Person为什么加圆括号,不加也是对的?

这个圆括号是类的构造方法的圆括号,用来给构造方法传值的

 

3、为什么类中的构造方法从类名相同方法变成了__construct?

因为这样类名改变的时候不用再去改构造方法的名字,方便

 

4、创建对象时时候是$user1,$user2,$user3,为什么回收(比如析构函数)的时候是$user3,然后是$user2,最后是$user1?

因为放变量的时候是把指针放到栈中,然后指向堆中的实际内存,所以栈中的存放方式是先进后出

 

 

二、php的类的构造方法和析构方法怎么写

1、相关知识

OOP是什么:
面向对象编程

软件工程的三大目标:
重用性、灵活性和扩展性

面向对象三大特性:
封装、继承和多态

面向对象参与角色:
1.类
2.对象

类与对象的关系:
对象是从类中实例化(生产)出来的!
类的组成成员:
1.属性
2.方法

类实例化对象实例:
$obj=new Person();

对象调用成员:
$obj->say();
echo $obj->name;

调用属性注意事项:
$obj->name;    #属性前不能带$

类定义注意事项:
1.文件名要与类名相同
2.类名每个单词的首字母必须大写,是最为严格的驼峰式写法
3.驼峰式:personActionGoodLike,严格的驼峰式写法:PersonActionGoodLike

构造方法:
1.__construct();
2.Person(); #如果有一个方法名字与类名相同,则该方法为构造方法

析构方法:
1.__destruct();
2.析构时变量从下往上删

 

 

2、代码

 1 <?php 
 2 // Person类定义
 3 // 文件名要与类名相同
 4 // 类名每个单词的首字母必须大写,是最为严格的驼峰式写法
 5 // 驼峰式:personActionGoodLike,严格的驼峰式写法:PersonActionGoodLike
 6 
 7 class Person{
 8 
 9     // 属性
10     public $name;
11     public $age;
12     public $sex;
13 
14     // 构造方法
15     function __construct($n,$a,$s){
16         $this->name=$n;
17         $this->age=$a;
18         $this->sex=$s;
19     }
20 
21     // 方法
22     function say(){
23         $n="name";
24         echo "hello world,my name is {$this->$n},my age is {$this->age},my sex is {$this->sex}!<br>";
25     }
26 
27     //析构方法
28     function __destruct()    {
29         echo "我是{$this->name},我还会回来的!<br>";
30     }
31 }
32 
33 //类实例化
34 $user1=new Person('user1',20,'nv');
35 
36 //类调用成员方法
37 $user1->say();
38  ?>

 

 

 
posted @ 2018-07-29 18:51  范仁义  阅读(272)  评论(0编辑  收藏  举报