问一下,面向对象中 __get 和 __set 到底是干什么用的? - PHP进阶讨论
问一下,面向对象中??__get 和 __set 到底是干什么用的? 如果只是可以访问和设置类的属性的话,PHP 有必要专门搞两个这样的函数吗,随便写个函数就可以输出和设置CLASS 的属性了。所以不明白 __get 和 __set 的作用到底是什么?还有类里面所谓的静态是什么意思? 用static 关键字申请的 ,,,,,,::? ?和 : 有什么区别,到底在类里面有没有‘:’这么一个操作符、、、、、、、、、、、、、、、先谢谢各位高手指教了!、、、、、、
答案:get和set不是类的属性,而是字段的属性,控制私有字段的可访问性,用于保护内部数据的安全,get用于获取字段的值(只读属性)意思是只能读取而不能对其赋值,set用于获取字段的值(只写属性)意思是只能赋值而不能读取。如果将get和set绑定在一起就是字段的封装,类里面有静态和非静态,static可以用于修饰方法、变量、类、字段、属性,用static修饰的方法称为静态方法,需使用类名调用,调用前需要初始化。
比如你在Program类中定义一个变量,在这个类访问不到,就可以再变量类型前面加上static修饰就可以访问了,你用的多了就明白是什么意思了,具体可见msdn里面。
还有就是 ‘:’表示继承(子类:父类(子类继承父类))
不知道你看过>没有\"只有一个访问入口,就可以实现对要保存的数据进行检查,这样就可以确保被保存的数据时有意义的数据\"\"通过单一的访问入口,可以方便地改变潜在的程序实现\"\"无论需要做什么样的改变,只要修改访问器函数即可\"
到技术吧网站查看回答详情>>原帖由 于 2006-4-28 11:53 发表他们在效果上没有区别, 我觉得唯一的不同在于 __GET __SET这样设置/访问 类属性 更符合面向对象的思想仅此而已.面向对象要求我们尽量把所有属性都封装好,就好象一个人,手啊脚啊,都只有动作,而不能单独把手 ...
到技术吧网站查看回答详情>>原帖由 于 2006-4-28 10:57 发表可是不用GET 和??SET 方法,一样可以控制和访问,类属性 ,那么这两个方法存在的意义呢 ,或则和用普通的方法有什么区别 他们在效果上没有区别, 我觉得唯一的不同在于 __GET __SET这样设置/访问 类属性 更符合面向对象的思想仅此而已.面向对象要求我们尽量把所有属性都封装好,就好象一个人,手啊脚啊,都只有动作,而不能单独把手脚拿出来,那样就成假肢了.^_^
到技术吧网站查看回答详情>>JAVABEAN里面的setXXX,getXXX.不一样么?
到技术吧网站查看回答详情>>当你存取一个 类 的不存在的 属性时,解析器会判断是否有超级方法??__get??__set例如class foo{}我里面一个属性都没有,如我有如下代码$o = new foo();$o->abc = \"123\";会出错! 因为上面的??class foo{} 里没有??$abc 这个属性如果你要允许 存取??“不存在”??的属性??就可以用这两个方法这两个方法:public function __set($name, $value){}public function __get($name) {}我们给 foo加上class foo{??public function __set($name, $value){? ? echo \"你要设置不存在的属性{$name}的值为{$value}\";??}??public function __get($name) {? ? return \"你要取的属性{$name}的值没有,怎么办啊???\";??}}[[i] 本帖最后由 terry39 于 2006-4-29 08:50 编辑 [/i]]
到技术吧网站查看回答详情>>原帖由 于 2008-6-9 22:39 发表 [i][/url]那个 ... 和JAVA里面的那个SET和GET完全是2个概念. 虽然看起来很像....如果你用.NET 那么MS的IDE是会自动帮你生成SETXXX和GETXXX的方法(某人说 JAVA里面哪个IDE怎么修改一下也可以实现 我对这个部分实在不熟悉 ... [/b]只要你愿意,功能强一些的文本编辑器都可以帮你做到这些~对于Java的主要IDE: Eclipse , IntelliJ , Netbeans 等等更是不在话下程序员是一个懒惰的人群~只要你能想得到的懒,肯定已经有人先懒过了……
到技术吧网站查看回答详情>>1.用__get 和 __set可以方便控制对类属性的访问,使得数据管理可以统一2.static 的变量和函数可以定义类的通用部分,为类的实例间通讯服务,不用创建实例就可以使用3.::表示属性或方法所在域,调用static时常用,:没见过
到技术吧网站查看回答详情>>那个 ... 和JAVA里面的那个SET和GET完全是2个概念. 虽然看起来很像....如果你用.NET 那么MS的IDE是会自动帮你生成SETXXX和GETXXX的方法(某人说 JAVA里面哪个IDE怎么修改一下也可以实现 我对这个部分实在不熟悉)
到技术吧网站查看回答详情>>static 静态属性/方法。用类::属性/方法用static的好处在于不需要实例化就能调用类的属性/方法 不需要new class();由于实例化类就有一个内存地址。用static来操作类减少内存使用。
到技术吧网站查看回答详情>>可是不用GET 和??SET 方法,一样可以控制和访问,类属性 ,那么这两个方法存在的意义呢 ,或则和用普通的方法有什么区别
到技术吧网站查看回答详情>>
上一个:使用PHP,应用switch……case分支语句来输出当天为星期几
下一个:求助求助。CI2.1中使用base_url()函数时出错