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燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP