php基础知识2

属性跟方法的重载

__get() __set()

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

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

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

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

 

使用数组访问的重载

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

迭代器

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

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

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

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

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章