php基础--快速复习记录13-类与对象(续)
类与对象(续)
final 关键字 标志final的方法不能被重写,标志为final的类不能被继承
对象的克隆 对象的简单赋值是不能创造一个相同的对象,其实还是同一个引用,需要使用clone
- 浅克隆 属性对象不会复制
- 深克隆 手动重写
__clone()
来手动克隆属性对象
对象的比较
==
属性值相等,且同属一类===
同一引用,单例模式判断
类型约束
PHP 5 可以使用类型约束。函数的参数可以指定必须为对象(在函数原型里面指定类的名字),接口,数组(PHP 5.1 起)或者 callable(PHP 5.4 起)。不过如果使用 NULL 作为参数的默认值,那么在调用函数的时候依然可以使用 NULL 作为实参。
如果一个类或接口指定了类型约束,则其所有的子类或实现也都如此。
类型约束不能用于标量类型如 int 或 string。Traits 也不允许。
后期静态绑定
额看了官方给的说法,总结起来就是__CLASS__
和self
是定义的类,static
是调用类,
后期静态绑定的解析会一直到取得一个完全解析了的静态调用为止。另一方面,如果静态调用使用 parent:: 或者 self:: 将转发调用信息。
没看懂。。。
引用和对象
我自己之前也是以为对象默认是引用赋值的但其实不是真实这样的,只是看起来像而已。。
PHP 的引用是别名,就是两个不同的变量名字指向相同的内容。在 PHP 5,一个对象变量已经不再保存整个对象的值。只是保存一个标识符来访问真正的对象内容。 当对象作为参数传递,作为结果返回,或者赋值给另外一个变量,另外一个变量跟原来的不是引用的关系,只是他们都保存着同一个标识符的拷贝,这个标识符指向同一个对象的真正内容。
所以其实普通如$a = $b//$b对象
二者存的实际是一个标识符的拷贝而$a = &$b//$b对象
这才是真的引用。不过了解下就可以了
对象的序列化与反序列化
注意自动加载以及__sleep()
__wakeup()
使用