16/7/7_PHP-构造\解析函数

昨天又问老师问题,老师还是强调要用博客之类记录下每天的学习的习惯。

我个人的想法是一些知识点不用笔记一下 在脑海的理解不是太深。但是老师都这么说了我老师乖乖的记录下今天的学习的一些知识、心得、技巧等等。

php的构造函数与解析函数

PHP5可以在类中使用__construct()定义一个构造函数,具有构造函数的类,会在每次对象创建的时候调用该函数,因此常用来在对象创建的时候进行一些初始化工作。

class Car {
   function __construct() {
       print "构造函数被调用\n";
   }
}
$car = new Car(); //实例化的时候 会自动调用构造函数__construct,这里会输出一个字符串

在子类中如果定义了__construct则不会调用父类的__construct,如果需要同时调用父类的构造函数,需要使用parent::__construct()显式的调用。

class Car {
   function __construct() {
       print "父类构造函数被调用\n";
   }
}
class Truck extends Car {
   function __construct() {
       print "子类构造函数被调用\n";
       parent::__construct();
   }
}
$car = new Truck();

同样,PHP5支持析构函数,使用__destruct()进行定义,析构函数指的是当某个对象的所有引用被删除,或者对象被显式的销毁时会执行的函数。

class Car {
   function __construct() {
       print "构造函数被调用 \n";
   }
   function __destruct() {
       print "析构函数被调用 \n";
   }
}
$car = new Car(); //实例化时会调用构造函数
echo ‘使用后,准备销毁car对象 \n‘;
unset($car); //销毁时会调用析构函数

当PHP代码执行完毕以后,会自动回收与销毁对象,因此一般情况下不需要显式的去销毁对象。

疑点一:构造函数一定命名为:__contruct();解析函数一定要命名为:__destruct()?

自己想法应该是一定的 因为这两个函数  是自动执行的  所以命名应该是定死的

还有就php使用class的方法、属性 " -> " 这点与java语言不一样  "." 刚开始不习惯

时间: 2024-11-13 08:17:38

16/7/7_PHP-构造\解析函数的相关文章

python 列表构造时的引用问题

以前老是不注意python对象引用,平时也没遇到这样的问题,昨天在这个小问题纠结了半天时间.真是TMD啊 先说明一下我的目的,我有一个包含16个元素的列表,每个元素也是一个小列表.我想每四个子列表为一个单位,改变每个子列表的第一个元素为我想要的值. 代码如下 >>>a = range(1,5) >>>b = [[0]*3]*16 >>>for i in range(4):    each = b[i*4:(i+1)*4]    for item in

《C++ Primer Plus》16.1 string类 学习笔记

16.1.1 构造字符串程序清单16.1使用了string的7个构造函数.程序清单16.1 str1.cpp--------------------------------------------------// str1.cpp -- introducing the string class#include <iostream>#include <string>// using string constructors int main(){    using namespace

java之路 构造代码块注意事项

1 /* 2 构造代码块: 3 4 构造代码块的作用:给对象进行统一的初始化. 5 6 构造函数的作用: 给对应的对象进行初始化. 7 8 9 构造代码块的格式: 10 11 { 12 构造代码块 13 } 14 15 注意: 构造代码块的大括号必须位于成员 位置上. 16 17 18 代码块的类别: 19 1. 构造代码块. 20 2. 局部代码块. 大括号位于方法之内. 作用:缩短局部 变量 的生命周期,节省一点点内存. 21 3. 静态代码块 static 22 */ 23 24 clas

LinkedHashSet的实现原理

http://zhangshixi.iteye.com/blog/673319 1.    LinkedHashSet概述: LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现.此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表.此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序. 注意,此实现不是同步的.如果多个线程同时访问链接的哈希Set,而其中至少一个线程修改了该Set,则它必须保持外部同步. 2.    LinkedH

Android(java)学习笔记62:关于多线程的实现(代码体现)

1 package cn.itcast_02; 2 3 /* 4 * 该类要重写run()方法,为什么呢? 5 * 不是类中的所有代码都需要被线程执行的. 6 * 而这个时候,为了区分哪些代码能够被线程执行,java提供了Thread类中的run()用来包含那些被线程执行的代码. 7 */ 8 public class MyThread extends Thread { 9 10 @Override 11 public void run() { 12 // 自己写代码 13 // System.

顺序表的设计与实现List(Arraylist)

1 //采用线性表实现一个list集合 2 public class SeqList<T> extends Object { 3 private Object[] elements; //数组 4 private int n; //长度 5 6 /** 7 * 构造方法,根据传参创建空表 8 * @param length 9 */ 10 public SeqList(int length) { 11 this.elements = new Object[length]; 12 this.n

集合之HashSet

在前篇博文中(java提高篇(二三)-----HashMap)详细讲解了HashMap的实现过程,对于HashSet而言,它是基于HashMap来实现的,底层采用HashMap来保存元素.所以如果对HashMap比较熟悉,那么HashSet是so  easy!! 一.定义 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable Ha

java--IO流(1)--黑马程序员

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- IO流(1) 主要内容:<异常的处理.Finally语句.File类 创建功能.删除功能.重命名功能.判断功能.基本获取功能.高级获取功能.文件过滤器.递归.IO流基类.FileOutputStream > 1.异常的处理 1.在main方法中,使用try...catch处理可能会发生的异常. 也用来捕获调用方法时,被抛出的异常: 2.在方法内部:建议:可以"捕获"异常,

Java集合系列之HashSet源码分析

一.HashSet简介 HashSet是Set接口典型实现,它按照Hash算法来存储集合中的元素,具有很好的存取和查找性能.主要具有以下特点: 不保证set的迭代顺序 HashSet不是同步的,如果多个线程同时访问一个HashSet,要通过代码来保证其同步 集合元素值可以是null 当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据该值确定对象在HashSet中的存储位置.在Hash集合中,不能同时存放两个相等的