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 ?>