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 ...
随机推荐
- Unity 性能优化(力荐)
开始之前先分享几款性能优化的插件: 1.SimpleLOD : 除了同样拥有Mesh Baker所具有的Mesh合并.Atlas烘焙等功能,它还能提供Mesh的简化,并对动态蒙皮网格进行了很好的支持. ...
- 积跬步,聚小流------Bootstrap学习记录(2)
现阶段开启每一次新的征程,已然离不开"Hello World"的习惯仪式.这次自然也不例外.先来看下给出的官网给出的演示样例: 1.bootstrap官网提供的html基本模板代码 ...
- Metasploit - Tips for Evading Anti-Virus
绕过杀毒软件,有很多钟方法.此处介绍一种,编写python程序调用shellcode,并使用Pyinstaler将python程序编译为exe程序. 准备工作:(Windows XP环境下编译) 将P ...
- HAProxy高可用配置视频教程
HAProxy提供高可用性.负载均衡等,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在当前的硬件上, ...
- C++中冒号(:)的作用
摘于:http://blog.csdn.net/zimingjushi/article/details/6549390 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef stru ...
- K-序列(埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛)
题目描述 给一个数组 a,长度为 n,若某个子序列中的和为 K 的倍数,那么这个序列被称为“K 序列”.现在要你 对数组 a 求出最长的子序列的长度,满足这个序列是 K 序列. 输入描述: 第一行为 ...
- 原生js实现多组图片切换
这几天一直在练习原生js写效果,需要理清自己的逻辑,做了一个切换多组图片的效果: css样式: * { margin: 0; padding: 0; } body { background: #303 ...
- Mirai僵尸网络重出江湖
近年数度感染数十万台路由器的僵尸网络程序Mirai,虽然原创者已经落网判刑,但是Mirai余孽却在网络上持续变种,现在安全人员发现,Mirai已经将焦点转向Linux服务器了. 安全公司Netcout ...
- fgrep---指定的输入文件中的匹配模式的行
fgrep命令是用来搜索 file 参数指定的输入文件(缺省为标准输入)中的匹配模式的行.fgrep 命令特别搜索 Pattern 参数,它们是固定的字符串.如果在 File 参数中指定一个以上的文件 ...
- hibernate : object references an unsaved transient instance 问题
save顺序问题---比如学生表和班级表..学生表里有班级ID的外键.一对多的关系. 你save的时候应该先save班级,再save学生..否则学生的外键没有对应的值,引发异常