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

时间:2021-09-28 17:22:37

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、代码

 <?php
// Person类定义
// 文件名要与类名相同
// 类名每个单词的首字母必须大写,是最为严格的驼峰式写法
// 驼峰式:personActionGoodLike,严格的驼峰式写法:PersonActionGoodLike class Person{ // 属性
public $name;
public $age;
public $sex; // 构造方法
function __construct($n,$a,$s){
$this->name=$n;
$this->age=$a;
$this->sex=$s;
} // 方法
function say(){
$n="name";
echo "hello world,my name is {$this->$n},my age is {$this->age},my sex is {$this->sex}!<br>";
} //析构方法
function __destruct() {
echo "我是{$this->name},我还会回来的!<br>";
}
} //类实例化
$user1=new Person('user1',20,'nv'); //类调用成员方法
$user1->say();
?>