作者JYHuang (夏天到了,冷不起來了說)
看板PHP
標題Re: [請益] OO有沒有可能這樣寫?
時間Thu Jun 14 10:58:01 2012
※ 引述《tkdmaf (皮皮快跑)》之銘言:
: 如果僅是因為你的需求在於要單純化單一功能的執行方法。
: 這是我覺得可行的做法。
: 只是說實在的,光是看你那樣的概念性想法我還不是很清楚你是要做什麼。
: 何況,如果物件的方法內容是能在外部被隨時抽換的話。
: 我不知道還要寫物件幹嘛。
: 你已經在內部抽換你所想要的方法,但不應該想說從外部定義他。
: 但事實上能不能外部抽換?當然行。
: 可是你抽換的也只是函式內的承載物件,而非本身的程式碼。
感謝!
其實有時也就是寫到後來想追求一種更方便更精簡的方法。
然後忘了是不是失了用物件的意義
我試著用俱體一點來形容這個物件的需求
== 物件 ==
class stastic{
private $date_range;
public $score_data;
public $user_data;
public $team_data;
public function __construct($date_range){
$this->date_range = $date_range;
self::getBaseData();
self::analyticData();
}
private function getBaseData(){
從資料庫撈出使用者個人資料 存入$user_data
再依分組規則存入 $team_data[$team_id]陣列中
}
private function analyticData(){
把成績資料做統計分別把加總資料放入 $team_data
}
public function best($team_id,$subject){
把各組的成績依$team_data->$subject做排序
傳回第一名的資料
}
}
// 主程式
$stastic = new stastic(7)
$teams = $stastic->team_data; // 取得資料丟給view去列出
foreach($teams as $team_id=>$data){
echo $data->name // 組名
echo $data->score // 成績
echo $data->best($team_id,'math')->name // 取得分組數學第一的人
原本這裡的best我是想在 getBaseData時就把資料丟給他。
可是成績還沒統計出來,所以無法指定值。
所以在思考能不能指定個函數, =>
在getBaseData()裡將$team_data加上個$team_data->best()。
等統計完畢時或是要輸出時再行呼叫best()這個函式
}
還是其實這個想法已經陷入了為了方便而兜圈子的迷思裡?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.202.164
※ 編輯: JYHuang 來自: 140.116.202.164 (06/14 11:00)
→ kuAIpAI:我最近在寫物件方面工具 會覺得只要跟資料庫有關的 06/14 12:05
→ kuAIpAI:我就完全不會想重新用 物件去進行重包~ 06/14 12:05
→ kuAIpAI:就只有一些基準 或者一些常用的 例如 寄信 檢查這類的 06/14 12:06
→ kuAIpAI:我才會進行工具製作~ 不然會失去彈性 06/14 12:06
→ JYHuang:因為資料庫規劃的問題,使得我不得不用程式計算成績 06/14 13:34