php静态类 使用场景,【php】PHP静态方法和非静态方法的使用场景
单纯的语法上是没有什么问题的
但对静态方法和非静态方法的使用场景
什么情况下该用什么希望大家能讲解下
我现在的使用情况是:
基本上都是实例方法, 除了单例, 工厂, 几个设计模式时使用!
其他的时机完全不知道怎么搞!
回答
附加个例子,如果能写出答案,也会懂什么时候要用static了
class user {
private static $count = 0;
public function __construct() {
self::$count = self::$count + 1;
}
public function getCount() {
return self::$count;
}
public function __destruct() {
self::$count = self::$count - 1;
}
}
$user1 = new user();
$user2 = new user();
$user3 = new user();
echo $user1->getCount();
echo "
";
unset($user3);
echo $user1->getCount();
写接口的时候对外暴露的方法用静态的。
如果你的类是需要实例化的,并且你的的方法是实例之间发生作用,那么事实上你“只能”使用非静态方法
如果你希望暴露一些什么地方都不会改变的,全局可用的方法,那么使用静态方法(场景上会让你感觉像是在调用一个全局可用的函数)
这里还有个陷阱是静态类和单例的区别,它们可能都是提供一个全局的”唯一”对象,并且暴露一些方法给外部使用
它们的场景区别是,如果你的这个唯一对象需要维持一定的状态,或者实现某个接口或者继承某个类,或者集成在某个类中,那么使用单例
如果你的这个对象仅仅就是提供全局访问,不涉及到状态,那么使用静态类静态方法
静态方法是属于类的,与实例无关,一般公用的方法用静态方法
不需要实例化对象的都可以用静态方法~
php静态类 使用场景,【php】PHP静态方法和非静态方法的使用场景相关推荐
- C#静态类 静态方法与非静态方法比较
静态类 在类(class)上加入static修饰,表示该类无法被实例化,并将该类中,无法实例化变量或函数 静态类的主要特性 仅包含静态成员 无法实例化 静态类的本质,时一个抽象的密封类,所以不能被继承 ...
- java静态方法和非静态方法的区别_史上最全阿里 Java 面试题总结
关注[ToBeTopJavaer],回复[答案],获取全套面试题答案,为明年的金三银四,做好充分的准备. JAVA基础 JAVA中的几种基本数据类型是什么,各自占用多少字节. String类能被继承吗 ...
- 静态方法和非静态方法的区别JAVA
最近在写JAVA程序的时候报了一个错. No enclosing instance of type FileRead is accessible. Must qualify the allocatio ...
- java中synchronized修饰静态方法和非静态方法有什么区别?
Synchronized修饰非静态方法 Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称"对象锁". Java中每个对象都有一个锁,并且是唯一的.假设分 ...
- 使用synchronized修饰静态方法和非静态方法有什么区别
前言 最近被问到了这个问题,第一次回答的也是很不好,在此参考网上答案进行整理记录.供大家学习参考. Synchronized修饰非静态方法 Synchronized修饰非静态方法,实际上是对调用该方法 ...
- java静态方法 问题_Java中堆、栈,静态方法和非静态方法的速度问题
一.堆和栈的速度性能分析 堆和栈是JVM内存模型中的2个重要组成部分,自己很早以前也总结过堆和栈的区别,基本都是从存储内容,存储空间大小,存储速度这几个方面来理解的,但是关于堆和栈的存储速度,只知道堆 ...
- php中静态方法有什么作用,PHP中的静态方法与非静态方法有什么不同吗?
除此之外,如果您尝试在您的方法中使用$this,如下所示: class t { protected $a = 10; public function tt() { echo $this->a; ...
- php中静态方法的调用,php中静态方法和非静态方法如何相互调用?
php中静态方法和非静态方法如何相互调用?2020-09-01 00:05:28 php中静态方法和非静态方法相互调用的方法:1.非静态方法调用静态方法: 可以[self]或者类名加[::]的形式调用 ...
- C#中静态方法和非静态方法的区别
静态方法和非静态方法的区别: 1.静态方法不需要类实例化就可以调用,反之非静态方法需要实例化后才能调用: 2.静态方法只能访问静态成员和方法,非静态方法都可以访问: 3.静态方法不能标记为overri ...
最新文章
- usaco Runaround Numbers
- C【C#公共帮助类】分页逻辑处理类
- android json 解析,android json解析 泛型
- windows组件向导里没有internet 信息服务(iis) 的解决办法
- 【Python】shutil内置模块复制和重命名文件
- HDU 2089 不要62(数位DP)
- 多个折线样式_新技能get,折线图转化成多阶梯瀑布图
- Vue模板 script部分
- jquery内核学习(3)--作用域分割(下)
- C# ChartControl
- ENVI5.1LC08大气校正前期步骤
- 在python中datetime使用中如何识别上月同期日期
- Kubernetes能成大事,华为云的眼光“真毒”
- Redis-事务(集成SpringBoot工程)
- html外链自动加nofollow,WordPress自动为站外链接添加nofollow标签
- 电脑桌面文件删除了怎么找回?
- 苹果Swift语言入门教程
- 在kile中使用Astyle插件使代码自动对齐
- 日常之卸载奇安信相关~
- python数独代码_Python 解数独(Sudoku)
热门文章
- Linux内核 eBPF基础:BCC (BPF Compiler Collection)
- 监视和调整Linux网络协议栈:接收数据
- 自旋锁:pthread_spinlock_t,互斥锁:pthread_mutex_t,条件变量:pthread_cond_t,读写锁:pthread_rwlock_t
- srsLTE源码学习:MAC层抓包pcap
- C语言log日志管理-支持文件与终端输出
- 现代科技概论_现代科技概论课程:力与运动1
- web前端知识(04html的表单)
- Hadoop(五)HBase基础
- Unity开发《一起来捉妖》教程 | 1.陀螺仪控制相机
- OpenShift 4 - 获取能访问API服务的用户认证Token