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

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

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

private static $menu = array();

大家可以讨论下吗

回复内容:

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

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

private static $menu = array();

大家可以讨论下吗

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

此外在效率上:

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

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

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode运行python文件_vscode怎么运行python文件

1、首先需要确保安装了VScode的Python插件,打开Python脚本,可以直接拖入,点击文件,点击首选项里的用户设置,这时候会用户设置配置文件。2、然后在左边文件CtrlF搜索Python关键字,找到pythonPath所在行3、然…

python输出日期语句_如何从Python的原始语句中提取时间-日期-时间段信息

经过几天的研究,我想出了以下方法来解决提取问题。在识别命题,然后识别月份并进行提取。在识别“-”,然后识别月份并进行提取。在部分代码如下所示。(节选,需要上下文中的依赖项)new_w new_s.split()for j in range(len(new_w)):…

datepicker动态初始化

datepicker 初始化动态表单的input,需要调用jquery的on方法来给未来元素初始化。 //对动态添加的时间文本框进行动态初始化$(table).on("focus", ".datepicker", function () {//添加data属性未来只初始化一次if ($(this).data("datepicke…

oracle中存储过程 =,oracle中的存储过程使用

一 存储过程的基本应用1 创建存储过程(SQL窗口)create or replace procedure update_staffasbeginupdate staff set name xy;commit;end update_staff;存储过程适合做更新操作,特别是大量数据的更新2 查看存储过程在数据字典中的信息(SQL窗口)select object_name,o…

python项目如何上线_django项目部署上线(示例代码)

前言完善的django项目上线,有很多种上线的方法,比如apache, uwsgi, nginx等。这里只介绍2种,一种是django自带的,另外一种则是nginx uwsgi完成介绍。这里的系统环境采用的是ubantu系统, python环境采用的是python3, d…

如何检查python的库是否安装成功_如何测试redis是否安装成功

下载Redis 下载好后 复制所在位置 cd 跳到 D:\Java\64bit 图中的目录位置 这样便启动成功了。 设置redis密码的话要 到redis.conf中找到 requirepass关键字 设置密码为123456 redis-cli.exe 进入客户端 然后 auth 123456 注释: auth 密码 set 对象名 [a] 值[123] ge…

第三方类库的学习心态

我们需要牢牢的记住:所有的第三方库能实现的功能,我们使用原生的API只要花时间和精力也能实现,但是可能会出现很多的bug而且会花费较多的时间和精力,而且性能也不一定很好,第三方的库会帮我们封装底层的一些代码&#…

HTTP返回码

响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。响应码分五种类型,由它们的第一位数字表示:1.1xx:信息,请求收到,继续处理2.2xx:成功,行为被成功地接受、理…

oracle树结构统计,ORACLE 递归树型结构统计汇总

区域平台统计报表,省--市--区 汇总,还有各级医院,汇总与列表要在一个列表显示。用到ORACLE 会话时临时表 GLOBAL TEMPORARY TABLE ON COMMIT PRESERVE ROWS;递归树: START WITH P.PARENTORG ‘ROOT‘CONNECT BY PRIOR P.ORG…

我们真的需要使用RxJava+Retrofit吗?

原文:http://blog.csdn.net/TOYOTA11/article/details/53454925 点击阅读原文 RxJava详解:http://gank.io/post/560e15be2dca930e00da1083 Retrofit详解:http://www.tuicool.com/articles/AveimyQ --------------------------------------…

python ide如何运行_ide - 如何运行Python程序?

你问我很高兴! 我正在努力在我们的wikibook中解释这个问题(这显然是不完整的)。 我们正在与Python新手合作,并且必须通过您正在询问的内容帮助我们! Windows中的命令行Python: 使用编辑器中的“保存”或“另…

逻辑回归算法_算法逻辑回归

logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。以胃癌病情分析为例&a…

使用docker搭建wordpress网站

概述 使用docker的好处就是尽量减少了环境部署,可靠性强,容易维护,我使用docker搭建wordpress的主要目标有下面几个首先我重新生成数据库容器可以保证数据库数据不丢失,重新生成wordpress容器保证wordpress网站数据不丢失&#xf…

XUtils之注解机制详解

原文:http://blog.csdn.net/rain_butterfly/article/details/37931031 点击阅读原文 ------------------------------------------------------ 这篇文章说一下xUtils里面的注解原理。 先来看一下xUtils里面demo的代码: [java] view plaincopy print?…

oracle ko16mswin949,mysql字符集 - osc_wq7ij8li的个人空间 - OSCHINA - 中文开源技术交流社区...

恰当的字符集,畅快的体验!00、Oracle字符集Subsets and Supersets #子集与超集Table A-11 Subset-Superset PairsSubset(子集)Superset(超集)AR8ADOS710AR8ADOS710TAR8ADOS720AR8ADOS720TAR8ADOS720TAR8ADOS720AR8APTEC715AR8APTEC715TAR8ARABICMACTAR…

曼彻斯特编码_两种编码方式以及两种帧结构

一、不归零制编码(Non-Return to Zero)对于不归零制编码是最简单的一种编码方式,正电平代表1,负电平代表0。如下图:其实在不归零制编码中有一个很明显的缺陷,那就是它不是自同步码。对于上图,你知道它传输的数据是什么…

python用一行代码编写一个回声程序_使用Python的多回声测验

我在写一个程序来管理一个五问多的问题- 关于全球变暖的选择测验和计算数字 正确答案。 我首先创建了一本字典,比如:questions \ { "What is the global warming controversy about?": { "A": "the public debate over wheth…

iOS开发学习路线

iOS开发学习路线 前言 这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程. 个人学习方法分享本文阅读建议 1.一定要辩证的看待本文. 2.本文主要是本人对iOS开发经验中总结的知识点 3.本…

Android快速开发框架XUtils

原文地址:http://blog.csdn.net/rain_butterfly/article/details/37812371 点击阅读原文 -------------------------------------------- https://github.com/wyouflf/xUtils https://github.com/wyouflf/xUtils3 XUtils是基于afinal开发的,比afina…