2013-06-20 65 views
4

當我開始學習OOP編程時,我讀到所有東西都是對象。我最開始用PHP開發。數組在這裏有重要的作用。在像C#這樣的語言中,大多數情況下你必須使用和傳遞對象而不是數組。PHP使用對象而不是數組

例如:

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; 
} 

然後實例類產品在另一個類中(例如,模型),並返回對象,而不是陣列(例如到控制器。)?

回答

2

在「一切都是對象」的心態中,請記住,這適用於從第1天開始就基於OO的語言.PHP不是這些語言之一,在事實之後添加了對象。所以你在PHP中的簡單變量類型不是對象,它們是更簡單的內存塊。

這是分裂的頭髮,但如果你不需要在PHP中使用對象,那麼不要簡單的數組比包含數組的對象更輕。我意味着他們使用更輕的內存,反過來,運行速度稍快。

關於編寫PHP最好的建議是KISS(保持簡單愚蠢)。

4

答案很簡單。

一切都是對象

只是一個理想。

在大多數現實世界的OOP語言中,也有簡單的數據類型。即使在Java或CSharp中。在PHP中,甚至有一個數組作爲複雜的非對象數據類型。當然你也不應該擔心使用它,在OOP環境中也是如此。

請注意,使用強大的陣列數據類型比缺點更具優勢。在我看來,PHP最缺乏的OOP特性是多態,順便說一句。


然而,PHP5引入一套​​和data structures,在所謂的Standard PHP Library(SPL)的擴展,它是PHP核心分配的一部分。你可以看看他們,但在大多數情況下數組數據類型應該工作(和表演)。

2

回答「當您使用PHP時,是否有任何意義爲所有內容創建類?」作爲「當你使用PHP時,是否有任何意義在類中爲每件事物創建屬性?」

是的,當所有使用的都是數組時,很難在其他人的代碼上進行開發。特別是如果沒有常量,就很可能會錯誤地輸入一些東西來創建一個很難找到的bug。另外,並不是說你不是在談論「爲所有東西創建對象」,而是屬性與值的列表(數組),這是我基於我的答案。

2

不是所有的東西都需要在課堂上。這不是Java。 :P

PHP是多範式語言。這意味着完全合法的使用一些面向對象而不需要全盤使用。 OOP可能會告訴你一個人是多麼可怕,但是OOP只有在降低整體複雜性時才值得。爲了做到這一點,將每個價值都包括在內,增加了的複雜性,因爲沒有真正的收益。

一個類基本上是一個具有自己獨特行爲的數據模板。如果您的數據不需要與其相關的行爲(例如特殊構造,驗證,解釋或持久性),則將其包裝在對象中往往是矯枉過正的。

+0

'OOP只有在降低整體複雜度的時候才值得... ...一個OOP-wonk證實了這一點:) +1 ..當然還有其他的原因使用OOP風格,除了'複雜性'之外。像'靈活性','可重用性...... – hek2mgl

+0

@ hek2mgl:儘管靈活性和可重用性通常會降低*總體*複雜性。 :)他們不在的地方,他們實際上可能是一個障礙。我敢肯定,幾乎我們所有人都已經寫了一些無限靈活性和可重用性的東西,並因此而捲入了一個大毛病。有很多事情要說,讓它現在工作,並等待增加一般性直到以後,何時何地,你發現你需要它。 – cHao

相關問題