一尘不染

何时使用静态类与实例化类

php

PHP是我的第一门编程语言。我不能完全确定何时使用静态类与实例化对象。

我意识到您可以复制和克隆对象。但是在我使用php的所有时间里,任何对象或函数总是以单个返回值(数组,字符串,整型)值或void结束。

我了解书籍中的概念,例如电子游戏角色类。 复制汽车对象并将新的红色对象设为红色 ,这一切都说得通,但它不是在php和网络应用程序中的应用程序。

一个简单的例子。一个博客。博客的哪些对象最好实现为静态或实例化对象?DB班?为什么不只在全局范围内实例化db对象?为什么不将每个对象都设为静态呢?性能如何?

都是风格吗?有适当的方法来做这些东西吗?


阅读 445

收藏
2020-05-26

共1个答案

一尘不染

这是一个非常有趣的问题-答案也可能变得有趣^^

考虑事物的最简单方法可能是:

  • 使用实例化的类,其中每个对象都有自己的数据(例如用户有名称)
  • 当它只是可以在其他内容上使用的工具时,请使用静态类(例如,用于将BB代码转换为HTML的语法转换器;它本身没有生命)

(是的,我承认,真的太过简化了…)

关于静态方法/类的一件事是它们不便于单元测试(至少在PHP中,但在其他语言中也是如此)。

关于静态数据的另一件事是程序中仅存在一个实例:如果将MyClass :: $ myData设置为某个位置的某个值,它将在所有位置都具有该值-
谈到用户,您将只能拥有一个用户-那不是很好,不是吗?

对于博客系统,我能说什么?实际上,我认为我不会写成静态的。也许是数据库访问类,但最后可能不是

2020-05-26