对__get用法详细解释()和()__setPHP
一般来说,一个类的属性通常被定义为私有的,它更符合实际的逻辑,但是对属性的读取和赋值操作是非常频繁的。因此,在PHP5中,两个功能__get()和()__set定义获取和分配属性,操作类似JavaBean在java是相似的,但不需要设置和各领域得到的操作,如JavaBean。只需添加两个魔术,设定值和私有成员值的操作。我们提供的特殊价值和获取在PHP5中属性值的设置方法,__set(__get)和(2)这种方法,这两种方法是默认的,但是我们手动添加到类里面去,如施工方法(__construct)(),并添加到班上唯一的存在,用下面的方法添加这两种方法,当然,也可以根据个人风格添加:
复制代码代码如下所示:
/ / __set()方法用于建立私人性质
公共功能__set($name,美元价值){
$ $;
}
/ / __get()方法来获取私人性质
公共功能__get($name){
返回$;
}
(__get)方法:该方法用于获取私有成员属性值,参数名称参数你想得到的成员属性,属性返回值获得,该方法不需要我们的手打电话,因为我们也可以用这种方法使私人的方法,是在私有财产的收购直接当对象被自动调用。由于私有财产已经包上,价值不是直接可用的,但如果你把这种方法在课堂上,直接访问该值时会自动调用__get在使用echo $ P1 ->名称报表($name)方法,为名称的名称的争论的性质,通过内部执行的方法,我们回到私人对传入的值属性。如果成员属性不是封装在私有的,对象本身不会自动调用此方法。
__set()方法:这个方法是用来设置私有成员属性的值。有两个参数。第一个参数是要设置值的属性名称。第二个参数是属性的值集,并且没有返回值,也不需要手工调用这个方法。它也可以是私有的。当直接设置私有属性值时,它会自动调用,并且私有的相同属性已被封装。
如果没有__set(),这种方法是不允许的,例如:美元->名称= zhangsan ',它会出错,但是如果你加在__set类(property_name美元,美元的价值)在这种方式中,直接向私人财产的分配,将自动调用它,这样正如名字property_name美元的属性,以价值被分配的权限值,通过该方法的执行,达到作业的目的。如果成员属性不是封装在私有的,对象本身不会自动调用此方法。为了不在非法值传递,你也可以把这个方法判断,代码如下:
复制代码代码如下所示:
< PHP
班上的人
{
下面是一个成员属性,是包私有成员
私有名称;名称
私人美元;性别
私有美元年龄
/ / __get()方法来获取私人性质
私有函数__get($ property_name)
{
回声自动调用该__get()方法当私有财产值直接得到的。
如果(isset(美元-> property_name美元))
{
收益(美元-> property_name美元);
}
其他的
{
返回(null);
}
}
/ / __set()方法用于建立私人性质
私有函数__set(property_name美元,美元的价值)
{
回声自动调用该__set()方法分配一个私有的属性当私有财产价值是直接设置;
美元美元美元-> property_name =价值;
}
}
P1 =新人(美元);
/ /直接的赋值操作的私有财产,将自动调用__set()分配方法
$ >=;
性别=男性;
美元=年龄= 20;
/ /获取私有财产直接价值,会自动调用__get()方法返回一个成员属性值
。;
回声性。;
回声年龄。;
>
程序执行结果:
当私人财产的价值是直接的__set()方法会自动调用私有财产的分配
当私人财产的价值是直接的__set()方法会自动调用私有财产的分配
当私人财产的价值是直接的__set()方法会自动调用私有财产的分配
这__get()方法会自动调用时直接获得私有财产的价值
姓名:张三
这__get()方法会自动调用时直接获得私有财产的价值
性别:男
这__get()方法会自动调用时直接获得私有财产的价值
年龄:20
如果上面的代码不加__get()和()方法__set,程序会出错,因为私有成员不能被外界的类的操作,和上面的代码直接调用的__get()和()方法__set。