面向对象(五)
对象的复制(克隆)clone(默认为浅克隆)
浅克隆:只能克隆对象的!非对象!非资源!数据
深克隆:对一个对象进行完全克隆;想要实现需要深克隆需要对对象使用魔术方法“_clone()”,并且在里面实现,认为复制浅克隆复制不了数据
对象遍历
对象也可以使用foreach进行遍历,
注意:
1.只能遍历属性
2.只能遍历看得到的属性
举个例子:
php内置标准类
这个类内部没有任何属性,但是可以使用这个类的属性--不存在的属性。
数据转化为对象
转换基本语法:
对象转换为对象:没有变化;
数组转换为对象:数组的键名当做属性名,值为对应的值;
通常数字下标对应属性并不方便操作( -> ),所以通常就适合纯数字下标的数组。
null转换为对象(空对象);
其他标量数据转换为对象:属性名为固定的“scalar”,值为该变量的值。
类型约束
许多语言中,类型约束是语法上的要求,在定义一个变量时,必须指定类型,并且以后也只能存储该类型数据(强类型语言)
php属于弱类型语言,特点是变量无需指定类型,而且在其后也可以储存任何类型。
注意:在php的较新语法中,在某些特定场合,针对某些特定类型,也可以进行语法约束;
特定场合:函数(或者方法)的形参变量
特定类型:对象类型(类名)、接口类型(接口名)、数组类型(array)、函数类型(callable);
function f1 (类名 $p1){......}; 要求该参数只能使用该类的对象;
function f1 (接口名 $p1){......};要求改参数只能舒勇实现该接口的对象;
function f1 (array $q1){......};要求改参数只能使用数组;
function f1 (callable $q1){......};要求改参数只能是一个函数或者方法,此时称之为回调函数或回调函数。