当前位置: 首页 > 面试题库 >

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

姬英武
2023-03-14
问题内容

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

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

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

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

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


问题答案:

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

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

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

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

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

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

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



 类似资料:
  • 我有以下代码: 到目前为止,代码还可以,但我无法在主方法中实例化'in',比如,因为它显示

  • 问题内容: 我有以下代码: 到目前为止,代码还不错,但是我无法像显示的那样在main方法中实例化 我该怎么做?我不想使我的课堂静止。 问题答案: 你还必须参考其他外部类。 如果内在是静态的,那将是

  • 在Oracle的Java教程中,我找到了以下文本: 与类方法和变量一样,静态嵌套类与其外部类关联。和静态类方法一样,静态嵌套类不能直接引用其封闭类中定义的实例变量或方法--它只能通过对象引用来使用它们。 注意:一个静态嵌套类与它的外部类(和其他类)的实例成员交互,就像任何其他顶级类一样。实际上,静态嵌套类在行为上是一个顶级类,为了方便打包,它已经嵌套在另一个顶级类中。 我认为不可能实例化一个静态类

  • 为便于开发,larva采用动态类型,于是首先遇到的一个问题就是,在转化为java的时候,如何处理动态类型带来的问题。乍一看,这个不是很复杂,已经有前车之鉴了,Cython就可以把python代码直接转化成C代码,我的做法和Cython有相似之处,但考虑效率问题,做了一点修改 (虽然第一版本并不实现class语法来自定义类,不过在论述这个问题的时候,假定有自定义类,因为主要矛盾就在自定义类的属性方面

  • 问题内容: 静态字段何时初始化?如果我从不实例化一个类,而是访问一个静态字段,那么用于实例化私有静态字段的所有静态块和私有静态方法是否在那个瞬间被调用(按顺序)? 如果我调用静态方法怎么办?它也运行所有静态块吗?之前的方法? 问题答案: 类的静态初始化通常在以下事件之一首次发生之前立即发生: 创建该类的实例, 该类的静态方法被调用, 分配了该类的静态字段, 使用了非恒定静态字段,或者 对于顶级类,

  • 问题内容: 在Oracle的Java 教程中,我找到了以下文本: 与类方法和变量一样,静态嵌套类与其外部类相关联。与静态类方法一样,静态嵌套类不能直接引用其封闭类中定义的实例变量或方法-它只能通过对象引用来使用它们。 注意:静态嵌套类与它的外部类(和其他类)的实例成员进行交互,就像其他任何顶级类一样。实际上,静态嵌套类在行为上是顶级类,为了包装方便,该顶级类已嵌套在另一个顶级类中。 静态嵌套类使用