### 对象的赋值
- 对象的赋值与普通的变量,数组的赋值不一样,变量的赋值是引用赋值(即两个变量指向同一块内存空间)。可以通过clone 来创建一个对象的副本
- clone 对象时,是对对象的浅复制,若对象中的属性也是一个对象的话,clone前后的对象该属性都是指向同一块内存空间的。我们可以使用魔术方法__clone克隆时,对属性在进行克隆一次。
```
public function __clone() {
$this->pro_obj = clone $this->pro_obj
}
```
### require, include, use, require_once
- require_once 只会加载同一个文件一次,而require可以加载同一个文件多次
- require 和 include 都是包含文件,区别在于require在找不到文件时会error中断程序,而include这会warning,程序继续执行
- use 导入命名空间。
### 范围解析符 :: (self::, static::, parent::)
### self, static, $this 的区别
- self 代表当前类
- static 代码所在的方法被哪个类调用,则就代表那个类
- this 代表当前类的实例
### new self 和 new static
- new self 当前代码是在哪个类中,就是实例化那个类的实例
- new static 当前代码所在的方法是被哪个类调用的,则就是实例化那个类的实例
### static 的静态访问
- static定义的方法或属性,在程序第一次进行加载时,即驻留内存,程序结束时,释放。
- 通过static申明的变量为静态变量,是该类的公共变量。第一次使用时即生成,对应该类的所有对象只有一份。是属于类的,不是属于对象的。static变量是属于类而不属于对象,可以在任何地方通地类来访问,是类的全局变量,类创建时即存入内存。对多个对象来说,静态数据成员只存储一处,可以节省内存。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值。
- 通过static申明的方法为静态方法。执行该方法时不会将对象引用传给函数,所以我们不能访问非静态成员,只能访问静态方法或静态变量。只能使用关于类的方式如self static parent等。使用时不用生成对象即可执行
- 静态方法中不可使用伪变量$this,则可以使用self,static, parent
```
通过类名访问:(通过类名只能访问静态方法,静态属性和部分非静态方法)
类::静态方法
类::静态属性
类::非静态方法(方法中不能包含$this)
通过类的实例访问
实例::静态属性
实例::静态方法
实例->非静态属性
实例->非静态方法或静态方法
```
### final修饰词
- 若一个类声明了 final,则这个类不能被继承
- 若父类中的方法使用了final修饰符, 则该方法不能被子类重写
### call_user_func 和 call_user_func_array
- 功能都是调用指定的函数,或类方法。区别在于第二个参数。call_user_func_array是已数组的形式传参。
- 调用方法`call_user_func('test', 'hello', 'world')` `call_user_func_array('test', ['hello', 'world'])`
- 调用类方法 `call_user_func(['User', 'test'], 'hello', 'world')` `call_user_func_array(['User', 'test'], ['hello', 'world'])`
- 调用静态方法`call_user_func('User::test', 'hello', 'world')` `class_user_func_array('User::test', ['hello', 'world'])`
- 调用对象方法 `call_user_func([$obj, 'test'], 'hello', 'world')` `call_user_func_array([$obj, 'test'], ['hello', 'world'])`
### trait代码块
- linux 基础
- ln 链接
- linux 环境变量
- linux 进程查看
- nginx
- redis
- redis 安装
- php 底层原理
- php源码编译安装
- phpize文件
- php命令行
- php7 新特性
- php7 变量
- php7 生命周期
- php sapi运行模式
- php 内存管理
- php 运行机制和Zend虚拟机
- php垃圾回收
- php 基础
- php.ini
- php函数
- 面向对象
- php 文件上传
- ob缓冲和页面静态化
- php中的session
- php cURL扩展
- composer 应用
- php 错误和异常
- thinkphp
- tp6容器和依赖注入
- tp6 的服务
- tp6事件
- tp6 多应用
- tp6路由
- tp6 cache
- tp6 request
- tp6 中间件
- tp6 response
- tp6 Db
- 备忘录
- 数据库表