PHP使用对象而不是数组

时间:2013-06-20 18:02:35

标签: php oop

当我开始学习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)?

4 个答案:

答案 0 :(得分:4)

答案很简单。

  

一切都是对象

只是一个理想的选择。

在大多数现实世界的OOP语言中,也有简单的数据类型。即使在Java或CSharp中也是如此。在PHP中,甚至有一个数组作为复杂的非对象数据类型。你不应该担心使用它,当然也在OOP环境中使用它。

请注意,拥有强大的数组数据类型比缺点更有优势。在我看来,最缺乏PHP的OOP功能是多态性,顺便说一句。


然而,PHP5在所谓的Standard PHP Library(SPL)扩展中引入了一套iteratorsdata 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)。

相关问题