php基础知识2

属性跟方法的重载

__get() __set()

当 $name 未定义 或者修饰符为 private 或者protected 时候。给对象$name属性赋值,因为$name不存在,所以会调用__set()方法。获取 对象的 $name 时候,因为属性不存在,所以会调用 __get()方法。

php基础知识2_第1张图片

 下面是一个更加能说明使用的例子。   array_key_exists() 方法:检查某个数组中是否存在某个键

php基础知识2_第2张图片

__call($function_name,$args) 方法会在对象调用某不存在的方法的时候被调用

第一个参数会返回 当前 不存在的方法的名字,第二个参数会接收当前不存在的函数的参数。

php基础知识2_第3张图片

 php基础知识2_第4张图片

使用数组访问的重载

php基础知识2_第5张图片

数组的方式访问对象中的属性。实现arrayAccess方法,并重写四个方法。

php基础知识2_第6张图片

迭代器

php基础知识2_第7张图片

php基础知识2_第8张图片

普通的类的属性是可以直接foreach被遍历的。

php基础知识2_第9张图片

但是对于复杂的数据,比如班级类中存在学生对象的数组。用forearch无法获取到学生的属性。这就用到了迭代器。

php基础知识2_第10张图片

班级类中实现iterator接口,通过指针操作了 $stu_list数组。所以foreach遍历班级的时候会自动去遍历 $stu_list数组。只需要实现接口添加相应操作,而不需要去知道php内部的具体实现方法。

php基础知识2_第11张图片

遍历班级,获取相应stu,通过stu就可以获取相应的值。这里__toString()方法。在打印对象时候,默认打印当前对象name

下面一个例子:打印数 min至max 的平方数。

php基础知识2_第12张图片

 

你可能感兴趣的:(php小白笔记)