请教一个关于类中系统函数权限的问题!麻烦大家帮个忙!!!!!! 类中的构造函数不能设为私有,但__isset()、__unset()、__set()、__get()教程上说最好设为私有。那其他系统函数如__toString()、__call()、__clone()等,都是对象直接调用的,他们应该设置成什么权限呢?多谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 PHP reserves all function names starting with __ as magical. It is recommended that you do not use function names with __ in PHP unless you want some documented magic functionality. 回2楼,我现在不是想知道该不该用魔力函数,我是想知道如果用的话该用什么权限。回3楼,为什么是public呢?__isset()等函数不也是自调用的吗,它们不都是private吗 public, protected, private三个不同的关键字用来将属性和方法的作用范围做进一步的区分,带有private关键字的属性和方法,只有所在的类中的方法才能调用;带有protected关键字的属性和方法,除了自己以外,自己的父类和子类中的方法也可以调用;带有public关键字的属性和方法,则可以从实例化以后的对象中进行调用,这样做最大的好处给所有的属性和方法增加了一些描述的特征,更便于整理和组织代码的结构详细出处参考:http://www.jb51.net/article/13982.htm 这些应该根据你自身的需要来定,没有什么一定要用什么方式想__get() 如果你不设置的话,仅仅是$this->var(没有声明var这个变量)不会有内容(或者打开报错的时候会有错误提示),但是这个__get()设置什么权限好想没有关系!但是如果你实现了__get,又要禁止外部调用的话,如上例的$this->var,那么__get()就要是private或者protected属性其他魔术函数一样,只要明确意味某些功能不能外部调用,那么才需要在实现具体内容上声明他的私有属性,否则都应该是public! 直接写成 pulbic 就行了。 你看的是什么教程?实际上, 魔术函数一般都是设为public,你可以试一下设成private就知道了.... 看的《细说PHP》,我只是怕把魔术函数设成private了会影响这个函数发挥功能,因为书上说构造函数一定不能设为private,但构造函数和魔术函数一样都是对象自调用的,所以我就不知道是不是其他魔术函数也不可以设成private。 事情是这样的.....构造函数是可以设为prviate的.....具体例子可以搜索 "php 单件模式" 其它魔术函数的情况各有不同,比如__clone也是可以设为private的, 具体例子可以搜索 "php 单件模式" , 哈哈, 和上面一样,比较规范的单件的例子会包含一个私有的__clone而__set/__get,应该是设为public, 因为这两个就是让从外部操作内部私有变量时使用....如果你非要设成private,php会报一个warning, 但是照样把它当作public用. 你可以试试其它的,我没测试,不敢乱说,不过大体差不多,你可以自己试一下所以....光看书不行,尤其是某些书:) 我想学php怎么入门啊?从哪里开始啊?请教一下各位师兄 初学PHP+MYSQL,HTTP 500 错误,大哥大姐帮帮忙吧 怎样才能将最新回复的内容在置顶呢? 请高手帮忙:关于匹配.是否要用正则表达式 Discuz 程序 又到两个星星了,共享过程,顺带散分 html 字符转义问题 留言版中插入图片链接 一个小问题,麻烦各位同仁帮我看看,哪里有错! 大家来讨论一下正则表达式吧, 如何在windows下让php后台运行 热门数据采集
回3楼,为什么是public呢?__isset()等函数不也是自调用的吗,它们不都是private吗
详细出处参考:http://www.jb51.net/article/13982.htm
比如__clone也是可以设为private的, 具体例子可以搜索 "php 单件模式" , 哈哈, 和上面一样,比较规范的单件的例子会包含一个私有的__clone而__set/__get,应该是设为public, 因为这两个就是让从外部操作内部私有变量时使用....如果你非要设成private,php会报一个warning, 但是照样把它当作public用. 你可以试试其它的,我没测试,不敢乱说,不过大体差不多,你可以自己试一下所以....光看书不行,尤其是某些书:)