当我开始学习OOP编程时,我读到一切都是一个对象。我用PHP开发的大部分时间。数组在这里起着重要的作用。在大多数情况下,在C#等语言中,您必须使用并传递对象而不是数组。
例如:
Class Product
{
private $data = array();
public function __construct()
{
$this->data['setting_1'] = 'a';
$this->data['setting_2'] = 'b';
$this->data['setting_3'] = 'c';
$this->data['setting_4'] = 'd';
$this->data['setting_5'] = 'e';
}
}
使用PHP时,为一切创建类是否有意义?例如:
Class Product
{
private $setting_1, $setting_2, $setting_3, $setting_4, $setting_5;
}
然后在另一个类(例如Model)中实例化类Product并返回对象而不是数组(例如,到Controller)?
答案 0 :(得分:4)
答案很简单。
一切都是对象
只是一个理想的选择。
在大多数现实世界的OOP语言中,也有简单的数据类型。即使在Java或CSharp中也是如此。在PHP中,甚至有一个数组作为复杂的非对象数据类型。你不应该担心使用它,当然也在OOP环境中使用它。
请注意,拥有强大的数组数据类型比缺点更有优势。在我看来,最缺乏PHP的OOP功能是多态性,顺便说一句。
然而,PHP5在所谓的Standard PHP Library
(SPL)扩展中引入了一套iterators和data structures,它是PHP核心发行版的一部分。您可以查看它们,但在大多数情况下,数组数据类型应该运行良好(并且性能良好)。
答案 1 :(得分:2)
回答“使用PHP时,为一切创建类是否有意义?” as“当你使用PHP时,是否有任何意义在类中创建属性?”
是的,当使用的所有内容都是数组时,很难在别人的代码上进行开发。特别是如果没有常量使得很可能输入错误来创建一个很难找到的bug。
此外,并不是说你不是在谈论“为所有事物创建对象”,而是在讨论属性与值列表(数组)的关系,这就是我的答案。
答案 2 :(得分:2)
没有。并非一切都需要在课堂上。这不是Java。 :P
PHP是一种多范式语言。这意味着使用一些OO而不进行全面的操作是完全合法的。 OOP可能会告诉你一个人有多可怕,但OOP只有在降低总体复杂性时才值得。在一个类中包含每个值,为了做到这一点,增加了复杂性,没有真正的收获。
类基本上是数据的模板,它具有自己的一些独特行为。如果您的数据不需要与之关联的行为(例如,特殊构造,验证,解释或持久性),那么将其包装在对象中往往是过度的。
答案 3 :(得分:2)
在"一切都是对象"心态,请记住这适用于从第1天开始使用OO的语言.PHP不是其中一种语言,事后添加了对象。因此,PHP中的简单变量类型不是对象,它们更小和更小。更简单的记忆。
它分裂的头发,但如果你不需要在PHP中使用一个对象,那么简单的数组比包含数组的对象更轻。通过打火机我的意思是他们使用更少的公羊,反过来,运行稍快。
关于编写PHP的最佳建议是KISS(Keep It Simple Stupid)。