PHP 板


LINE

看板 PHP  RSS
※ 引述《JYHuang (夏天到了,冷不起来了说)》之铭言: : Class Profile{ : private $db; : private $pic_path; : public $user_info; : public $user_id; : public function __construct($uid){ : $this->db = new db() // pdo; : $this->user_id = $uid; : $this->pic_path = path; : self::user_info(); : } : public user_info(){ : $sql = 'select * from user where uid='.$this->user_id'; : $this->user_info = $this->db->getrow($sql); : } : public get_pic($uid){ : $pic = $tihs->pic_path.$this->user_id.".jpg"; : if (!file_exitsts($pic)){ : if ($this->user_info->sex = 'male') : return 'boy.jpg'; : else : return 'girl.jpg'; : } : } : } : 一都会先 : $user = new Profile($uid); : echo "hello ".$user->user_info->name; : echo "<img src='".$user->get_pic."'>"; : 来取得使用者本身的资讯和图片 : 後来想要取得其它使用者的图片时 : 想直接呼叫来取得 : echo "<img src='".Profile::get_pic($uid)."'>"; : 这样会有pic_path和user_info未被建构而无法取得的问题。 : 嗯.. : 这样的话是要怎麽去架构整个class会比较好呢? : 把pic跟profile切开用继承的方式去写嘛? : 还是在get_pic里做判断再做建构? 嗯…看来你想做的是 ORM, 有一个(还是该说两个)很 lightweight 的 ORM/AR 框架你可以参考一下, http://j4mie.github.com/idiormandparis/ 在你情况里,需要调整的可能不是「物件构造」去配合呼叫方法, 而是定型一个呼叫方法,然後统一物件构造。 一般实做 ORM 通常会单纯的物件呼叫或走工厂模式, $user = new User ($uid); $user = Factory::Model ('User')->find_one ($uid); 如果你希望在原型呼叫下直接取值当然是可以,但物件结构就开始变得 dirty, 因为太多功能目的了,每个取值 method 都必需要实做这项,不然怎麽分辨 Profile::get_pic ($uid) 可以用,而 Profile::get_xxx ($uid) 不能用的原因在哪, 而且实际上物件还是产生并且占用了资源,真正省到的仅仅是呼叫时少一行 code, Profile::get_pic ($uid) // 内部物件初始化後丢值回来 $prof = new Profile ($uid); // 外部初始化後拿到值 $prof->get_pic ($uid) 与其这样,如果你目的是更快速/轻盈(省物件)去拿到使用者的某些特定资讯, 例如一堆使用者的 avatar list,还不如直接做 function 用 sql 来拉会比较好, 但缺点是 sql 会开始四散,维护上变得麻烦, 其实现在的物件资源占用在 PHP 版本升上去过程中已经优化很多, 除非已经是高主机压力覆载,要考虑整体优化作业, 不然不用太担心 1 个和 20 个小物件的差别, 想想那些知名的 framework 都是多少个物件交叠在奔驰的… --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.136.54.205
1F:推 JYHuang:嗯..其实我顾虑的也是你最後提到的~ 04/19 09:26
2F:→ JYHuang:还有一点是想把所有avatar相关的method都用同个来源 04/19 09:27
3F:→ JYHuang:这样维护比较不会漏掉 04/19 09:27







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP