2008-11-24 105 views
1
class Score 
{ 
    var $score; 
    var $name; 
    var $dept; 
    var $date; 

    function Score($score, $name, $dept, $date) 
    { 
     $this->scores = ($score); 
     $this->name = ($name); 
     $this->dept = ($dept); 
     $this->date = ($date); 
    } 

    function return_score(){ 
     return $this->scores; 
     return $this->name; 
     return $this->dept; 
     return $this->date; 
    } 
} 

$newscore = new Score("131313","James", "Marketing", "19/05/2008"); 
echo $newscore->return_score(); 

上述代碼僅回顯131313.我剛開始學習OO PHP,所以請輕鬆點!完全失去,所以任何幫助將不勝感激。只返回一個元素,OO PHP

+0

你想要什麼輸出?看起來你想要所有的變量,但不知道。 – philistyne 2008-11-24 11:33:46

回答

2

您不能在函數中返回多次。您可以返回一個連接字符串:

return $this->scores.' '.this->name.' '.$this->dept.' '.$this->date; 
//added spaces for readability, but this is a silly thing to do anyway... 

我不會推薦它,但正如你會混你它的功能對象的呈現 - 沒有。

我建議你做某種類型的模板(我想象你可能想製表這些數據?)。每一行看起來是這樣的:

<tr> 
    <td><?php echo $score->name; ?></td> 
    <td><?php echo $score->scores; ?></td> 
    <!-- more cells for more properies? --> 
</tr> 

,並給它你的對象或對象數組(你知道的foreach {}?)。我知道這看起來更囉嗦,但分離這些問題將是從長遠來看對你更好。

與=分配:你不需要周圍事物的括號被分配(通常情況下)。

另外: 您是否正在運行PHP4?你的構造函數表明你是。如果可能的話,我建議移動到5.21或更高,因爲班級和對象要好得多。您還可以使用相當有用__construct方法(而不是使用命名方法的類 - 你的情況:分數())。這使得繼承和擴展更容易,因爲你的類不再需要在兩個地方記住它們從哪個類擴展而來。

3

只能返回在每個函數或方法的一個值。

在你的情況,你應該有一個方法,爲每個類成員組成:意見後

public function getScore() { 
    return $this->score; 
} 

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

public function getDept() { 
    return $this->dept; 
} 


public function getDate() { 
    return $this->date; 
} 

編輯:

你也可以需要返回所有成員作爲一個單一的方法字符串:

public function getAll() { 
    return $this->getScore(). " " .$this->getName() . " " .$this->getDept(). " " .$this->getDate(); 
} 
1

你應該使用公共的,受保護的或私有的,而不是VAR

var $score; 
var $name; 
var $dept; 
var $date; 

protected $score; 

或保護/私有變量和方法,與像這樣下劃線編碼標準前綴的第一

protected $_score; 

該方法也可以稱爲__construct

function Score($score, $name, $dept, $date) 
{ 

var被聲明爲分數,但是您將變量分配給分數。我也不明白你爲什麼在變量周圍加上括號。

 $this->scores = ($score); 
     $this->name = ($name); 
     $this->dept = ($dept); 
     $this->date = ($date); 

$this->score = $score; 
    $this->name = $name; 
    $this->dept = $dept; 
    $this->date = $date; 

} 

更換遇到將返回從功能/方法價值第一回。我建議你重新編碼爲每個變量添加get/set,即getScore()或使用PHP5方法重載__set,__get和__call。

public function getScore() { 
     return $this->score; 
} 

}

您還可以在自動的方法來設置和獲取變量Overloading

相關問題