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、代码
<?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();
?>
php课程 12-38 php的类的构造方法和析构方法怎么写的更多相关文章
- PHP类(二)-类的构造方法和析构方法
构造方法 构造方法是对象创建完成后第一个被对象自动调用的方法,用来完成对象的初始化 在每个类中都会有一个构造方法,如果没有声明的话,类中会存在一个没有参数列表并且内容为空的构造方法.如果声明的话,默认 ...
- Java :BufferedWriter类和BufferedReader类的构造方法、主要方法
BufferedWriter 和 BufferedReader 为带有默认缓冲的字符输出输入流,因为有缓冲区所以效率比没有缓冲区的高. 一.BufferedWriter 类 构造方法:buffered ...
- 3.JAVA-方法重载,类的封装,构造/析构方法
1.方法重载 和C++的函数重载一样,主要是实现多个相同的函数名,但是参数表不同. 参数表不同主要有以下几种 1) 参数个数不同 2) 参数类型不同 3) 参数顺序不同 2.类和对象 类class 用 ...
- 第8.18节 Python类中内置析构方法__del__
一. 引言 基本上所有支持OOP设计的语言都支持析构方法(也称析构函数),析构方法都是在对象生命周期结束时调用,一般用来实施实例相关生命周期内访问数据的扫尾工作,包括关闭文件.释放内存.输出日志.清理 ...
- 11.JAVA-Object类之finalize(),clone(),toString()等方法覆写
1.Object介绍 Object类是一个特殊的类,是所有类(包括数组,接口 )的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类,所以可以通过向上转型的方法使用 ...
- 妙味css3课程---1-2、css3中新增的伪类和伪元素有哪些
妙味css3课程---1-2.css3中新增的伪类和伪元素有哪些 一.总结 一句话总结: 1.div:target{}是什么意思? 比如a标签的锚点链接到div,div:target{}就可以找到这个 ...
- thinkphp3.1课程 1-2 thinkphp中入口文件的实质是什么
thinkphp3.1课程 1-2 thinkphp中入口文件的实质是什么 一.总结 一句话总结:在thinkphp中,我们访问的始终是入口文件,并没有主动去访问任何一个其他文件,只不过在入口文件体内 ...
- 尚学python课程---12、python语言介绍
尚学python课程---12.python语言介绍 一.总结 一句话总结: 1.操作简单:简便计算:允许通过单个“import”语句后跟一个函数调用来完成复杂的计算.虽慢 2.库丰富:比如人工智能和 ...
- 开涛spring3(12.4) - 零配置 之 12.4 基于Java类定义Bean配置元数据
12.4 基于Java类定义Bean配置元数据 12.4.1 概述 基于Java类定义Bean配置元数据,其实就是通过Java类定义Spring配置元数据,且直接消除XML配置文件. 基于Java ...
随机推荐
- JAVA JS 中的 modulus exponent 生成 C# 公匙
C#用的是xml,里面是base64编码的.你上面的就是hex格式,只要把上面hex格式转成byte数组,然后在base64编码就可以了. public static byte[] Hex2Byte( ...
- Attach、Detach和DeleteObject
原文:Attach.Detach和DeleteObject,想飞的梦想 1.CWnd Attatch和Detach的关系 首先,要明白Windows对象和MFC对象的区别. MFC对象实际上并没有把整 ...
- 基于Linux的智能家居的设计(2)
1 系统整体设计方案 智能家居系统的是一个实时查询家庭的温湿度.照明控制.自己主动控制的设定.集家庭娱乐.智能安防为一体,大量数据快处理.可靠的系统,因此在硬件和软件上都有非常大的要求,因此在这里进 ...
- Java编程手冊-Collection框架(下)
建议先看Java编程手冊-Collection框架(上) 5. Set<E>接口与实现 Set<E>接口表示一个数学的集合,它不同意元素的反复,仅仅能包括一个null元素. ...
- Spring MVC数据转换
样例:把一个字符串封装而一个对象. 如:username:password格式的数据ZhangSan:1234.我们把这个数据封装成一个User对象.以下分别使用属性编辑器与转换器来实现. 1.自己定 ...
- [B cannot be cast to java.lang.String
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.inv ...
- VirtualBox内刚刚安装完Debian9系统,也无法设置共享文件夹。解决的方法就是安装VirtualBox客户端增强包。
VirtualBox内刚刚安装完Debian9系统,也无法设置共享文件夹.解决的方法就是安装VirtualBox客户端增强包. 1.若直接安装客户端增强包会得到如下提示:root@debian:/op ...
- MYSQL常用命令列表
MYSQL常用命令列表 1.系统管理 mysql -h主机地址 -u用户名 -p 连接MYSQL(在mysql/bin) exit 退出MYSQL命令 mysqladmin -u用户名 -p旧密码 p ...
- 推荐学习《算法之美:指导工作与生活的算法》中文PDF+英文PDF
我们所有人的生活都受到有限空间和有限时间的限制,因此常常面临一系列难以抉择的问题.在一天或者一生的时光里,哪些事是我们应该做的,哪些是应该放弃的?我们对杂乱无序的容忍底线是什么?新的活动与熟悉并喜爱的 ...
- JS数组去重的6种算法实现
1.遍历数组法 最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法"indexOf"是ECMAScript5 方法 ...