当前位置: 首页 > 后端技术 > PHP

php-static理解

时间:2023-03-30 02:28:30 PHP

如有错误请留言指正1.函数(4种)定义属性定义静态方法定义静态变量后期静态绑定2.详细介绍示例://Student1的属性和方法aresetstatic,//未设置Student2的静态属性和方法,classStudent1{static$name="Kangkang";静态函数outPutInfo(){echo"age:18;sex:man";}staticfunctionputn}classStudent2{public$name="康康";publicfunctionoutPutInfo(){echo"age:18;sex:man";}}1.静态属性——类可以不实例化直接访问,实例化后**不能**访问```echoStudent1::$name;//OutputKangkang$student=newStudent1();echo$student->name;//Undefinedproperty:Student1::$name```-如果没有权限控制,默认为public(公共)-只可以被初始化为文本或常量,不能使用表达式```classStudent1{$a=1;static$name=$a;//这里会报错}```2.静态方法-类未实例化直接访问,实例化后**可访问**-如果没有访问控制,则默认为public(公共)——由于静态方法可以在没有对象的情况下被调用,所以伪变量$this在静态方法中是不可用的。3、静态变量属于静态存储方式,其存储空间为内存中的静态数据区(存储单元分配在静态存储区),该区域的数据在运行过程中一直占用这些存储空间整个程序的(在整个程序运行过程中是不释放的),也可以认为它的内存地址一直保持不变,直到整个程序结束。也就是说,直到程序结束,它一直占据着空间。4、后期静态绑定——从PHP5.3.0开始,PHP增加了一个叫做后期静态绑定的特性,用于引用继承范围内静态调用的类。看不懂描述,举个例子:classA{publicstaticfunctionwho(){echo__CLASS__;}publicstaticfunctiontest(){self::who();}}classBextendsA{publicstaticfunctionwho(){echo__CLASS__;}}classCextendsA{publicstaticfunctionwho(){echo__CLASS__;}//重写测试方法publicstaticfunctiontest(){self::who();}}B::test()."\n";//输出AC::test();//输出C