单纯的语法上是没有什么问题的

但对静态方法和非静态方法的使用场景

什么情况下该用什么希望大家能讲解下

我现在的使用情况是:

基本上都是实例方法, 除了单例, 工厂, 几个设计模式时使用!

其他的时机完全不知道怎么搞!

回答

附加个例子,如果能写出答案,也会懂什么时候要用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静态方法和非静态方法的使用场景相关推荐

  1. C#静态类 静态方法与非静态方法比较

    静态类 在类(class)上加入static修饰,表示该类无法被实例化,并将该类中,无法实例化变量或函数 静态类的主要特性 仅包含静态成员 无法实例化 静态类的本质,时一个抽象的密封类,所以不能被继承 ...

  2. java静态方法和非静态方法的区别_史上最全阿里 Java 面试题总结

    关注[ToBeTopJavaer],回复[答案],获取全套面试题答案,为明年的金三银四,做好充分的准备. JAVA基础 JAVA中的几种基本数据类型是什么,各自占用多少字节. String类能被继承吗 ...

  3. 静态方法和非静态方法的区别JAVA

    最近在写JAVA程序的时候报了一个错. No enclosing instance of type FileRead is accessible. Must qualify the allocatio ...

  4. java中synchronized修饰静态方法和非静态方法有什么区别?

    Synchronized修饰非静态方法 Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称"对象锁". Java中每个对象都有一个锁,并且是唯一的.假设分 ...

  5. 使用synchronized修饰静态方法和非静态方法有什么区别

    前言 最近被问到了这个问题,第一次回答的也是很不好,在此参考网上答案进行整理记录.供大家学习参考. Synchronized修饰非静态方法 Synchronized修饰非静态方法,实际上是对调用该方法 ...

  6. java静态方法 问题_Java中堆、栈,静态方法和非静态方法的速度问题

    一.堆和栈的速度性能分析 堆和栈是JVM内存模型中的2个重要组成部分,自己很早以前也总结过堆和栈的区别,基本都是从存储内容,存储空间大小,存储速度这几个方面来理解的,但是关于堆和栈的存储速度,只知道堆 ...

  7. php中静态方法有什么作用,PHP中的静态方法与非静态方法有什么不同吗?

    除此之外,如果您尝试在您的方法中使用$this,如下所示: class t { protected $a = 10; public function tt() { echo $this->a; ...

  8. php中静态方法的调用,php中静态方法和非静态方法如何相互调用?

    php中静态方法和非静态方法如何相互调用?2020-09-01 00:05:28 php中静态方法和非静态方法相互调用的方法:1.非静态方法调用静态方法: 可以[self]或者类名加[::]的形式调用 ...

  9. C#中静态方法和非静态方法的区别

    静态方法和非静态方法的区别: 1.静态方法不需要类实例化就可以调用,反之非静态方法需要实例化后才能调用: 2.静态方法只能访问静态成员和方法,非静态方法都可以访问: 3.静态方法不能标记为overri ...

最新文章

  1. usaco Runaround Numbers
  2. C【C#公共帮助类】分页逻辑处理类
  3. android json 解析,android json解析 泛型
  4. windows组件向导里没有internet 信息服务(iis) 的解决办法
  5. 【Python】shutil内置模块复制和重命名文件
  6. HDU 2089 不要62(数位DP)
  7. 多个折线样式_新技能get,折线图转化成多阶梯瀑布图
  8. Vue模板 script部分
  9. jquery内核学习(3)--作用域分割(下)
  10. C# ChartControl
  11. ENVI5.1LC08大气校正前期步骤
  12. 在python中datetime使用中如何识别上月同期日期
  13. Kubernetes能成大事,华为云的眼光“真毒”
  14. Redis-事务(集成SpringBoot工程)
  15. html外链自动加nofollow,WordPress自动为站外链接添加nofollow标签
  16. 电脑桌面文件删除了怎么找回?
  17. 苹果Swift语言入门教程
  18. 在kile中使用Astyle插件使代码自动对齐
  19. 日常之卸载奇安信相关~
  20. python数独代码_Python 解数独(Sudoku)

热门文章

  1. Linux内核 eBPF基础:BCC (BPF Compiler Collection)
  2. 监视和调整Linux网络协议栈:接收数据
  3. 自旋锁:pthread_spinlock_t,互斥锁:pthread_mutex_t,条件变量:pthread_cond_t,读写锁:pthread_rwlock_t
  4. srsLTE源码学习:MAC层抓包pcap
  5. C语言log日志管理-支持文件与终端输出
  6. 现代科技概论_现代科技概论课程:力与运动1
  7. web前端知识(04html的表单)
  8. Hadoop(五)HBase基础
  9. Unity开发《一起来捉妖》教程 | 1.陀螺仪控制相机
  10. OpenShift 4 - 获取能访问API服务的用户认证Token