Bir sınıf içinde bir yöntem Yeniden Kullanım

2 Cevap php

Ben temelde bir mysql sorgu sonuçlarını döndüren bir yöntem var.

public function getStuff() {
$this->sort = "myColumn ASC";
$query = ... ORDER BY $this->sort;
return $data;
}

Ben sadece farklı bir sıralama düzeni ile, bu sonucu yeniden istiyorum, ve ben sadece orijinal yöntemini çağırarak, başka bir yöntemle bu verileri kapmak mümkün olması gerektiği gibi görünüyor. Bu gibi:

public function getMoreStuff() {
$this->sort = "anotherColumn DESC";
$this->getStuff();
}

Beklendiği gibi "getStuff ()" veri döndürme iken Ama, "getMoreStuff ()" hiçbir şey döndürmez. Ben benim ikinci yönteme tüm sorguyu kopyalamak için gerekli değildir eminim, ama ben dahil edebilirsiniz nasıl bir kayıp am. Herhangi bir rehberlik çok mutluluk duyacağız. Teşekkürler!

2 Cevap

Sorunları çift:

  1. When getMoreStuff() calls getStuff(), the $this->sort from getMoreStuff() is being overwritten by the sort order from getStuff(). You can give getStuff() a default sort by using getStuff($sort = "myColumn ASC"), then feeding a different sort order to getStuff() when you need to.

  2. getStuff () sonra sadece got verileri dönen değil, hangi) (getMoreStuff için veri dönüyor. Sen return $this->getStuff(); (veya return $this->getStuff("anotherColumn DESC"); kullanmanız gerekir.

Bunu yapmanın tek yolu:

public function getStuff($sort = 'myColumn ASC') {
    $query = "... ORDER BY $sort";
}

Değişken $sort değerleri ile sınıf dışında onu aramak, ya da tanımlanan yöntem adları ile sınıf içindeki (kısayolları gibi.)