2010-05-18 54 views
-3
$starcraft = array( 
    "drone" => array( "cost" => "6_0-", 
         "gas" => "192", 
         "minerals" => "33", 
         "attack" => "123", 

        ) 
    "zealot" => array( "cost" => "5_0-", 
         "gas" => "112", 
         "minerals" => "21", 
         "attack" => "321", 
        )    
) 

我正在玩oop,我想用這個類在這個數組中顯示信息,但是我不知道如何構造這個類來顯示它。我可以舉個例子嗎?

這是我到目前爲止,我不知道從哪裏去。我應該使用setter和getters嗎?

class gamesInfo($game) { 
    $unitname; 
    $cost; 
    $gas; 
    $minerals; 
    $attack; 
} 
+5

我不知道你在問什麼。 – 2010-05-18 01:15:04

+1

我改寫了它。 – Strawberry 2010-05-18 01:22:44

+3

你在玩類和對象,而不是OOP。面向對象是一個複雜的思想和哲學。實現任何類來說你的代碼遵循OOP是不夠的。 – zerkms 2010-05-18 01:43:53

回答

5

到目前爲止您確實非常接近。

在OOP中,每個對象通常代表一個離散的概念。因此,對於你的班級來說更好的名字是Unit,因爲它代表了遊戲中的一個單位。示例:

class Unit { 
    var $name; 
    var $cost; 
    var $gas; 
    var $minerals; 
    var $attack; 

    function setName($name) { 
     $this->name = $name; 
    } 
    function getName() { 
     return $this->name; 
    } 
} 

請注意,此示例具有相應的實例變量(名稱,成本等)以及名稱變量的getter/setter對。您希望爲其他實例變量添加更多的getter/setter對。

一旦你把所有的getter/setter方法,你可以做這個實例化一個Unit

$zealot = new Unit(); 
$zealot->setName("Zealot"); 
$zealot->setAttack(321); 
... etc. 

您還需要了解的構造函數,這樣就可以實例化一個Unit這樣:

$zealot = new Unit("Zealot"); 
$zealot->setAttack(321); 

你可以看到,構造函數會給你一個有點像條捷徑的存在,讓你在同一時間設置單位名稱實例化Unit類。

所以打印Unit對象,你會做這樣的事情:

echo $zealot->getName(); 

編輯:像zerkms說,OOP是複雜的,我在這裏所描述的基本類和對象的編程。這只是OOP的開始。

+0

我可能是錯的,但對這類問題的回答鼓勵在這裏進一步詢問可以(並且實際上應該)僅僅通過閱讀手冊 ;-)回答的問題 – zerkms 2010-05-18 01:47:22

+0

非常感謝Jeff :) – Strawberry 2010-05-18 02:02:52

相關問題