php - 什么应该是 php 中类的实例?

标签 php oop class instance

在 PHP 5.2.x、mySQL 5.x 中

我在思考什么应该和不应该是 php 类的实例时遇到了一些问题,因为一旦页面呈现,它们就不会持久存在。

假设我有一个评论列表。对我来说,每个评论都是它自己的对象是有道理的,因为我可以对它们调用操作,并且它们拥有属性。如果我用另一种语言(具有持久状态并可以与之交互的语言)来执行此操作,我会那样做。

但这似乎很浪费,因为这样做我有一个调用 new() 的循环,这可能意味着我需要为每个实例访问数据库(也很糟糕)。

但也许我遗漏了什么。

Php 在我对类和对象的看法上似乎有所不同。什么时候应该是类实例,什么时候不是?

最佳答案

这是一个主观问题,所以我会尝试连贯地收集我的想法:

持久性在 PHP 中具有不同的含义。您认为每个评论都应该是一个对象,因为评论具有可以对其执行的操作,这似乎是正确的。对象不会在页面加载期间持续存在这一事实并不真正相关。在 PHP 中,在一个脚本中使用一个对象并不少见,该对象在脚本完成时被销毁,然后在后续页面加载时重新实例化它。

面向对象编程提供(除其他外)代码组织和代码重用。即使一个对象在脚本执行期间只真正使用一次,如果定义它的类有助于程序组织,那么您这样做是对的。

您通常不必担心资源浪费,直到它开始成为一个问题;如果您的服务器经常负担过重,以至于降低您的用户体验或限制您的扩展,那么是时候进行优化了。

附录:

为评论定义类的另一个原因是,这样做可以在以后需要扩展类时带来好处。假设您决定实现评论回复之类的功能。回复本身只是一条评论,但包含关于它所引用的评论的一些额外属性。您可以扩展 Comment 对象以添加这些属性和附加功能。

关于php - 什么应该是 php 中类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9049025/

相关文章:

php - MySQL - 在一对多关系中选择不匹配的数据

javascript - WordPress 在插件中使用 .js 脚本

c# - 非静态类中的静态方法和静态类中的静态方法有什么区别?

python - LPTHW ex43 OOP 试图弄清楚如何让游戏运行

php - 如果有 4 行或更多行以用户名命名,如何删除行

php - 如何将产品放入循环中以显示所有产品

java - 保存、获取和设置立方体的长度(扩展类)

swift 2.0 : Parametrized classes don't call proper == function if it inherits from class that is Equatable

jQuery:动画 css 和类更改

c++ - 将 Lua 包装到 C++ 类中的问题