作者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)
1F:→ kuAIpAI:我最近在写物件方面工具 会觉得只要跟资料库有关的 06/14 12:05
2F:→ kuAIpAI:我就完全不会想重新用 物件去进行重包~ 06/14 12:05
3F:→ kuAIpAI:就只有一些基准 或者一些常用的 例如 寄信 检查这类的 06/14 12:06
4F:→ kuAIpAI:我才会进行工具制作~ 不然会失去弹性 06/14 12:06
5F:→ JYHuang:因为资料库规划的问题,使得我不得不用程式计算成绩 06/14 13:34