欢迎来到天天文库
浏览记录
ID:30791404
大小:185.50 KB
页数:6页
时间:2019-01-03
《php静态成员介绍,静态的使用问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、场景:记录学生的数量!当有学生类,每个学生类对象,就是一个学生实例化一次,多出来一个学生,销毁一次就少一个学生定义一个计数器,构造方法中数量+1,析构数量J如何定义计数器?不能直接用属于对象的属性,每个对象所独有的!显然,应该找一个对象所共有的数据。构造方法静态局部变量,也是不行!原因是析构不能用显然,应该找一个对象并且能够在多个方法内使用的变量使用全局变量即可,在方法内,是可以通过$GLOBALS访问到全局变量classStudent{public$name;//public$count=0;publicfunction_construct(){$GLOBALS['co
2、unt']++;}publicfunction_distruct(){$GLOBALS['count']-;}}$count=0;$sl=newStudent;$s2=newStudent;echo$count,'<br/>';;unset($s2);$s3=newStudent;echo$count;此时,站在业务逻辑的角度分析下,是否合理全局变量不应该属于任何的对象或者类。$count与Student没有丝毫的逻辑联系显然,应该找一个能够被对象所共有并且能够在多个方法内使用的变量,还应该找一个与妆肖的对象类有逻辑关系的数据:可以使用类的静态成员ClassS
3、tudent間明x$nam
4、j£耐陀二NUiX$count-0^分成静态属性和静态方法保存数据的是静态属性,执行功能的是静态方法语法:声明:额外增加一个static关键字publicstaticfunctionfl(){}publicstatic$stu_count=0;访问->访问对象成员,对象访问符因此,应该使用类访问访问语法:类::成员::称之为静态访问符,类访问符(范围解析操作符)在构造方法中,访问到,++publicfunction_construct(){Student::$stu_co
5、unt++;因此,此场景的完整代码为:classStudent{类的静态成员类的静态成员指的是逻辑上被所有的对象所共享,属于类的成员称之为类的静态成员Object(Student)$name7NULL—————F{public$name;publicstatic$stu_count=0;publicfunction_construct(){Student::$stu_count++;}publicfunction_destruct(){Student::$stu_count—;$sl=newStudent;$s2=newStudent;echoStudent::$stu_
6、count;echo'<hr/>';unset($s2);echoStudent::$stu_count;echo,<hr/>*;$s3=newStudent;echoStudent::$stu_count;输出的结果为:212类似于$this同样存在一个selft关键字(注意没有$),在类中,代表当前类$this这个对象self类自己self::因此上面的代码可以写成如下:classStudent{public$name;publicstatic$stu_count=0;publicfunction_construct(){self::$stu_
7、count++;}publicfunction_destruct(){self::$stu_count—;publicstaticfunctionfl(){$sl=newStudent;$s2=newStudent;echoStudent::$stu_count;echo*<hr/>‘;unset($s2);echoStudent::$stu_count;echo*<hr/>';$s3=newStudent;echoStudent::$stu_count;静态的使用问题1:访问上,静态成员只能使用::静态静态访问符号访问典型的,::前应该是类,类内
8、可以使用self但是,php支持:对象::静态成员这种写法上面的代码中最后一行也可以写成:echo$s3::$stu_count但这种写尽量不要这么写非静态方法静态方法2:访问上,静态成员使用类访问,而非静态成员使用对象访问但是,问题岀现在方法上测试一:■•■•■■■■.静态方法Student::static__func();StrictStandardsNon-staticmethodStudeStudent::non_static_ftuic();.测试二:使用对象访问静态与非静态//Students:static_fun
此文档下载收益归作者所有