【PHP】深入浅出PHP中的Static——静态

0x01 引子

好吧,我不得不承认在写这篇文章之前我对于PHP的静态static的用法只是一知半解,在深入学习了静态的用法后,真的很惭愧,发现以前真的不懂,希望这篇文章能够对看到的读者有所启示(希望你不是跟我一样也是一点也不知道TAT..)

0x02 静态之初试

不知道大家是否跟我一样,对于面向对象语言的静态变量其实是听过的,模模糊糊地知道,如果在类中声明了静态变量,那么在函数中操作这个变量,实际上相当于操作这个变量本身,也就是引用,是一个概念的,他不会在函数执行完成后被销毁掉。在这之前,对于静态变量我大概就知道这些吧,那么今天博主带大家再深入理解这个概念吧。

0x03 静态之深入

首先要介绍的是,PHP中的静态变量和静态方法是可以在对象没有实例化之前就能使用的,就像这样:


看到没有!!是不是很神奇!!(【捂脸:)】好吧,少见多怪了,大佬勿喷。。)我类A的外面我没有new这个类,只是用了类名加一对冒号接上静态变量和静态方法即可使用

类名::静态变量
类名::静态方法

所以说在以前代码审计的时候看到一些用框架写的面向对象的cms,就觉得好像从来没有实例化对象一般,原来是这么回事。。

0x04 静态变量

至于使用规则嘛,对于静态变量也没什么好说的了,就是要记住可以在对象没有实例化的时候就可以访问了,可以通过self::静态变量的方式访问本类中的静态变量,当然了,必须在本类的静态方法中使用才行哦~

0x05 静态方法

对于静态方法,规则就比较多了。

  1. 静态变量只能通过静态方法来调用
    就像之前说过的那样,在静态方法中使用self::静态变量的方式可以调用本类中的静态变量,就像这样:

  2. 静态方法不能调用非静态变量


  3. 静态方法可以调用静态方法


  4. 静态方法可以调用非静态方法,但是非静态方法会自动转换为静态方法


我们可以看到,尽管出现了警告,但是hello world!还是echo出来了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,596评论 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,797评论 0 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,483评论 19 139
  • 新浪微博:人生manbu 蚊子歌 2015-12-16 05:37 翁嗡嗡,翁嗡嗡,我是吸血小行家。今天食材真正好...
    人生漫步阅读 245评论 0 0
  • 林先生和李小姐相视的那一刻他们都笑了 那天,朋友叫我出去玩,他也去了,说来也奇怪,整场聚会大概有10个人,可我偏偏...
    李佳人阅读 1,620评论 16 44

友情链接更多精彩内容