一般我们做php项目 类里面 定义的方法 或者 属性 都是普通的 什么时候该用 static 方法和属性 有什么例子的

我很少用 静态属性 就有一次用过 我在做会员中心 要获取 会员菜单的时候 我用的

private static $menu = array();

大家可以讨论下吗

回复内容:

一般我们做php项目 类里面 定义的方法 或者 属性 都是普通的 什么时候该用 static 方法和属性 有什么例子的

我很少用 静态属性 就有一次用过 我在做会员中心 要获取 会员菜单的时候 我用的

private static $menu = array();

大家可以讨论下吗

当方法与实例关系不大时,也就是当你希望摆脱实例化的限制直接使用类中的一个方法或属性时,可以定义为 static。

此外在效率上:

类名访问静态方法 > 实例访问静态方法 > 实例访问非静态成员方法

但是,过多地定义静态方法或属性无疑会对类的封装性和安全性造成一定影响。

btw,如果属性与实例的关系几乎为0时,建议定义为 const 常量。

在一个类里面,不变的一些东西可以使用static,比如,数据库链接的dsn,还有比如你问题中提到的会员菜单。

我一般不排斥业务代码用静态方法/属性,但框架/公共的代码还是要极力避免静态方法和属性的(少数如工厂方法的情况可以排除),因为这涉及

扩展性 调用方写死类名意味着要改变行为几乎只能改类的代码,无法通过继承来override

可测试性 静态方法/属性 在测试的时候往往会对插桩造成困难

耦合度 特制static属性可以被外部修改的时候,会大幅度提升耦合度。 public static的属性有修改行为的话和全局变量几乎只有名字的区别,灾难程度是一样的 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

php什么情况下使用静态属性,oop-做php项目什么时候该使用静态属性呢相关推荐

  1. 如何在windows开启UAC(用户账号控制)的情况下优雅的管理程序的权限申请方案(一)

    问题起源: 简单的说就是在windows vista之前的windows系统,只要是管理员(比如Administrator)账户登录系统以后,该账户下的任何程序的启动权限都具有管理员权限:这个权限是很 ...

  2. 如何在命令长度受限的情况下成功get到webshell(函数参数受限突破、mysql的骚操作)...

    0x01 问题提出 还记得上篇文章记一次拿webshell踩过的坑(如何用PHP编写一个不包含数字和字母的后门),我们讲到了一些PHP的一些如何巧妙地绕过数字和字母受限的技巧,今天我要给大家分享的是如 ...

  3. 技术中台的作用是什么,在什么情况下才有必要做技术中台?

    目录 技术中台的作用是什么? 技术前台 技术中台 在什么情况下,才有必要做技术中台? | 前提1:技术组织结构垂直化 | 前提2:业务线又多又复杂 有了技术中台,是不是就能上天? 总结 就在刚过去的半 ...

  4. 【小白转型项目经理】实战案例8,在无法确定全部需求的情况下,怎样规避风险?

    问题描述 我们准备启动一个定制软件项目,项目打算通过公开招标的形式甄选乙方. 现在我们的难题在于目前这个项目的软件需求并未完全确定,目前的确定需求只出来了 大概三份之一,其余是暂定需求,客观上整个项目 ...

  5. 经济不景气的情况下网站推广营销要怎么做?

    如今的经济形式相信很多人都是有所感触的,一方面是受到疫情的影响经济非常萧条,另外一方面很多产品的市场也处于饱和的状态,所以很多企业都觉得非常难以前行了.那么这样的情况下大家都是如何应对的呢?很显然我们 ...

  6. 存档属性是做什么用的?

    计算机搞了不少年头了,昨天系统学习备份知识的时候才弄明白文档中"存档"属性的真正目的!如下: 存档是用来备份的时候标识用的,说白就是做个标记,表示这个文档在上次备份之后有没有被修改 ...

  7. 疫情下海外城市轨道交通信号系统项目集管理实践

    摘要:疫情不仅会影响海外城市轨道交通信号系统项目集的管理,而且会影响其最终收益.因此,信号系统企业在管理海外项目集时,必须科学有效地应对疫情,降低不良影响,获得高收益,从而稳定自身在海外的市场和自身的 ...

  8. javaweb(实用)-IDEA下resources目录下txt文件读取写入引发的项目后台路径问题总结

    首先idea下 真实路径与项目原本路径对比: (文件操作之后idea内打开项目内的文件并没有任何变化,项目真实路径或者说编译后情况下的文件发生了变化) 项目中resources文件file.txt原本 ...

  9. 上下文异常中的上下文属性_在没有适当上下文的情况下引发异常是一种不良习惯...

    上下文异常中的上下文属性 Allison Anders等人的<四个房间>(1995). 我不断重复同样的错误. 因此,该停止并制定规则以防止这种情况了. 错误不是致命的,但很烦人. 当查看 ...

最新文章

  1. CSS中对字体进行设置
  2. 报名 | 首届!Apache Flink 极客挑战赛强势来袭,重磅奖项等你拿,快来组队报名啦!...
  3. UTF-8编码的字符串拆分成单字、获取UTF-8字符串的字符个数的代码及原理(c++实现)...
  4. [转载] C#面向对象设计模式纵横谈——10. Decorator装饰模式
  5. 补码为什么要取反加1?
  6. Android系统启动系列----init进程
  7. Spark Streaming 遇到 kafka
  8. 大数据可视化大屏图表设计经验,教给你
  9. pillow模块 (PIL) 生成验证码
  10. CC3200在sl_Start函数处不断重启复位的原因解析
  11. 小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_12、SpringBoot2.x文件上传实战...
  12. 小甲鱼python二_小甲鱼python第二讲课后习题
  13. pynq 环境搭建_FPGA硬件加速的图像大小调整案例分析
  14. 70行脚本实现促销信息微信通知
  15. Simscape物理网络建模的基本原理
  16. QQ网页登陆密码加密方式农场、空间、WebQQ等通用
  17. 可视化展示——论文相似度分析页面设计
  18. 网页错误详细信息 用户代理: Mozilla/4.0 (compatible; MSIE 8.0;
  19. redis-删除所有key
  20. 爱看广场舞的老爷爷的笔记---ifconfig命令无法使用

热门文章

  1. Java 设计模式 Day2 之面向抽象原则:接口(interface)的设计应用与抽象类的区别
  2. 会计云课堂实名认证后怎么更改_离职了,税务局的会计信息还是我,老板就不更改,怎么办?...
  3. Git rebase命令实战
  4. SpringMVC那点事
  5. win7个人计算机的ip地址,win7计算机ip地址查询_win7本机ip地址查询
  6. LeetCode-287 寻找重复数 二分法
  7. webkitlineclamp css3,-webkit-line-clamp
  8. skywalking使用方法_SkyWalking 源码分析—— Collector Server Component 服务器组件
  9. spark算子_Spark篇之持久化算子
  10. c是过程化语言吗数据库,A.数据库语言B.过程化语言C.宿主语言D.数据库管理系统...