php面向对象之_get(),_set()拦截器
来源:互联网 发布:glide源码 编辑:程序博客网 时间:2024/06/05 11:08
面向对象的三大特性之一就是封装性。所以当申明字段时一般是申明私有字段。那么如何去读取或者修改这些字段呢,就要用到$this关键字。
首先我们创建一个类。
class Animal{ private $name = dog; public function getname(){ return $this->name; } public function setname($value){ $this->name=$value; }}
如果当需要读取或修改字段时直接调用getname()和setname()方法了,但是如果当有大量属性时一个一个去写get,set方法就会非常麻烦。这时候就需要用到php拦截器_get(),_set()方法了。
先上代码:
class Animal{ private $name = dog; private $age = 2; private $weigth = 5; public _get($name){ return $this->$name; } public _set($name,$value){ $this->$name=$value; }}
这时候无论想得到或改变哪些字段只需要调用这两个方法了
$cat = new Animal();$cat->_set('name','lili');$catname = $_get('name');echo $catname;
这里就输出:lili了。
其实一般拦截器都是private方法,如:
class Animal{ private $name = dog; private $age = 2; private $weigth = 5; private _get($name){ return $this->$name; } private _set($name,$value){ $this->$name=$value; }}$cat = new Animal();$cat->name;$cat->name=lili;
这样子调用属性和修改属性也是可以的,这是为什么呢
这时候__set()和__get()方法私有了,还是可以执行,是因为目前程序的指针已经在类内了。而类内可以执行封装的方法,类内执行私有方法,不会出现任何错误。它只需要间接的拦截就可以了。拦截是在内类执行的。所以,__set()和__get()是PHP内置的方法,具有一定的特殊性。
0 0
- php面向对象之_get(),_set()拦截器
- php面向对象_get(),_set()的用法
- php面向对象_get(),_set()的用法
- php面向对象_get(),_set()的用法
- php面向对象_get(),_set()的用法
- php面向对象_get(),_set()的用法
- php面向对象_get(),_set()的用法
- php面向对象_get(),_set()的用法
- php面向对象_get(),_set()的用法
- php面向对象_get(),_set()的用法
- php面向对象_get(),_set()的用法
- PHP之—function _set() _get()
- 学习PHP面向对象(四)_get(),_set()的用法 这种方法不推荐使用
- php面向对象_get(),_set()的用法 (通过另外类 或者子类调用私有方法时)
- php面向对象_get(),_set()的用法详细介绍[乐杨俊]
- 详解PHP的_get()和_set()方法
- PHP5之_set和_get函数
- 访问函数_set和_get
- 通过心理学知识提高问题定位与解决能力(下)
- 求数组中最大和子串类问题
- Android 自定义 弹幕控件
- javamail 发送邮件的简单实例 学习
- androidscreenOrientation属性
- php面向对象之_get(),_set()拦截器
- 树和二叉树——利用二叉树遍历思想解决问题
- 以九宫格为例谈声明式语言Prolog
- poj 1018 Communication System 【动态规划】||【贪心】
- 使用jazzyViewPager 加载assets目录打造炫酷效果
- C++ primer plus Sales_item.h源码
- 接下来要挖的一些坑
- 设计模式
- poj-1789Truck History(最小生成树)