Sadece bir eleman OO PHP, iade alma

3 Cevap php
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();

Yukarıdaki kod sadece 131.313 yankılanır. Sadece OO PHP öğrenmeye başlıyorum o kadar kolay gidin lütfen! Tamamen kaybettim, bu yüzden herhangi bir yardım çok takdir.

3 Cevap

Sen bir zamanlar bir işlevi daha dönmek olamaz. Sen could birleştirilmiş bir dize döndürür:

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

Ben onun işlevselliği ile size nesnenin tanıtımı karıştırma olurdu sanki bunu tavsiye etmem - yapmayacağım.

Ben bazı tür bir şablon (ben bu verileri tablolaştırıyoruz isteyebilirsiniz hayal ediyorum?) Yapma öneririm. Her satır gibi görünecektir:

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

ve o nesneye ya dizisinin nesneleri vererek (eğer foreach {} biliyor musun?). Ben daha uzun soluklu görünüyor biliyorum, ama bu endişeleri ayıran is, uzun vadede sizin için daha iyi olacak.

= Ile atama: (genellikle) atanan şey etrafında parantez gerekmez.

Also: Are you running PHP4? Your constructor function indicates you are. I'd recommend moving to 5.21 or higher if at all possible as classes and objects are much better. You can also use the rather useful __construct method (as opposed to using the class named method - in your case: Score()). This makes inheritance and extending easier because your classes are no longer having to remember in two places what class they are extending from.

Sadece her işlevin veya yöntemin bir değer döndürebilir.

Sizin durumda, sınıf üyelerinin her biri için bir yöntem olmalıdır:

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

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

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


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

Önerilerden sonra düzenleyin:

Ayrıca tek bir dize olarak tüm üyeleri döndüren bir yöntem ihtiyacı olabilir:

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

Her şeyden önce var yerine, kamu veya özel korumalı kullanmalısınız

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

gibi

protected $score;

ya da bir kodlama standardı önek gibi gibi çizgi ile / özel değişkenleri ve yöntemleri korumalı

protected $_score;

Bu yöntem aynı zamanda __construct çağrılabilir

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

Var skor olarak ilan edilir ama puanları bir değişken atayın. Eğer değişken parantez neden ben de anlamıyorum.

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

Ile değiştirin

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

}

Karşılaşılan ilk dönüş fonksiyonu / yöntemle bu değeri dönecektir. Ben her değişken için get / set, yani getScore () eklemek veya PHP5 yöntem yüklenmeyi __ set, __ get ve __ çağrı kullanmak recodesrc öneririz.

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

}

Ayrıca değişkenler Overloading ayarlamak ve almak için otomatik yöntemlerle bakabilirsiniz