[TOC]
# 对象在内存中的存在形式和对象默认的传递方式
1. $person2 = $person
```
$person = new Person();
$person2 = $person;
说明:把一个对象赋值给另一个变量,这个也是值传递,但是这个值传递的是对象的引用(可以理解为对象标识符),即每个包含对象的变量都持有对象的引用(reference),而不是整个对象的拷贝。
```
![](https://i.vgy.me/VTwjSQ.png)
2. $person2 = &$person
![](https://i.vgy.me/WbAfbT.png)
# 析构方法
定义:在系统销毁对象时,会自动触发析构方法,去释放或销毁对象在创建的时候,分配的相关资源。
```
public function __destruct(){
代码块;//可以去释放相关资源
}
```
触发时机:
* 程序运行结束后,对象被销毁时
* 当没有变量指向对象时,也就是对象没人使用了,比如unset()或者对象变量指向了其它数据
析构方法调用的顺序:
* 先创建的对象,后被销毁
* 后创建的对象,先被销毁
# PHP的垃圾回收机制
基本介绍:
* 在PHP中,当一个对象没有任何引用指向它的时候,就会成为一个垃圾对象,PHP将启用垃圾回收将对象销毁
* 当程序退出前,PHP也将启用垃圾回收器,销毁对象
# 魔术方法
基本介绍:
* 由系统自动调用
* 函数名的开头 由__两个下划线
特别说明:
PHP将所有以__(两个下划线)开头的类方法保留为魔术方法。所以在定义类方法时,除了上述魔术方法,建议不要以__为前缀
魔术方法概览:
1.
```
__construct 构造方法
__destruct 析构方法
```
2.
```
__call($method_name,$args) 在对象调用一个不可访问方法时(比如函数private/protected/不存在),__call会被调用
__callStatic($method_name,$args) 与上面一致,只不过这个指的是静态方法
```
3.
```
__get($pro_name) 当去访问一个不可以访问的属性(property)时(取值),默认会调用魔术方法__get
__set($pro_name,$value) 当去访问一个不可以访问的属性(property)时(赋值),默认会调用魔术方法__set
```
4.
```
__isset($pro_name) 当对不可访问属性(比如:private/protected/不存在)调用isset()或empty()时,__isset()会被调用
__unset($pro_name) 当对不可访问属性(比如:private/protected/不存在)调用unset()时,__unset()会被调用
```
5.
```
__sleep
__wakeup
```
6.
```
__toString() 将类以字符串的形式输出
```
7.
```
__set_state
```
8.
```
__clone() 如果定义了__clone()方法,则新创建的对象(复制生成的对象)中的__clone()方法会被调用
克隆与被克隆的对象指向的内存空间不同,只是普通的备份,不会像对象赋值一样,传递引用
```
- PHP操作集合
- 获取字符首字母
- PHP实现定时备份MySQL数据库
- PHP定时发送邮件
- PHP基本语法
- 总结
- 命名空间
- 错误抑制符
- 位运算符
- 原码,反码,补码
- traits
- PHP的反射机制
- const和define的区别
- 语法
- 常用的函数
- 1.变量及打印函数
- 2.引入文件
- 3.常量
- 4.错误处理
- 5.面向对象
- 数据结构与算法
- 结构
- 数组
- 索引
- 散列表(哈希表)
- 栈
- 队列
- 链表
- 算法
- 排序算法
- 插入排序
- 冒泡排序
- 选择排序
- 归并排序
- 快速排序
- 查找算法
- 二分查找
- 二分查找变形版本1:查询数据在序列中第一次出现
- 哈希算法
- 算法复杂度
- Smarty模板引擎
- composer
- yaf
- yaf的安装配置
- 其它
- Java
- JavaSE
- 1.Java发展及JDK安装配置
- 2.Eclipse的下载及安装
- 3.Java开发基础
- 虚拟机
- 2.编辑虚拟机设置
- 1.虚拟机下安装centos
- 3.安装vmtools
- Linux
- 1.vi和vim编辑器
- 2.开机、重启和用户登录注销
- 3.用户管理
- 4.用户组管理
- 5.用户和组的相关文件
- 6.linux运行级别
- 7.帮助指令
- 8.文件目录类指令
- 9.时间日期类
- 10.搜索查找类
- 11.压缩和解压缩
- 12.组管理和权限管理(难点,重点)
- 虚拟主机的配置
- phpstudy快捷配置
- 配置文件配置
- PHP面向对象高级特性
- SPL标准库(PHP标准库)
- PHP链式操作的实现
- 面向对象编程的基本原则
- 设计模式
- 基本的设计模式