PHP 板


LINE

看板 PHP  RSS
我最近算是剛學php 在class的部份有個小問題, 我們在設定private 或是protected的變量時, 我們可以用public function 自己設定一個內部函數 去修改這類型的變量, 還有另一種方法是直接利用標題所說的 魔術方法 __set __get 去改變或是查看這個變量 我想問的是大家在操作這類變量 是使用那一種方法比較多呢? 我是覺得魔術方法好像很好用, 但好像也有人說這方法不好? 說這方法不能對特定變量做一些限制。 若是設定一種新的變量就寫一個 新的public function就沒這個問題。 但我看網路上 有人在 __set裡面寫個switch 不能個別對變量作限制的缺點好像就没了 //之前沒打functuon name 現在加回去 public function __set($name,$value){ switch($name){ case "$name" .......... break; } } 請問我有忽略什麼嗎? 哪一種方法比較好比較常用呢? ----- Sent from JPTT on my Xiaomi MI 5. --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.14.168.131
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1489327527.A.4A9.html
1F:推 wilson200106: 你忽略了function name(X 03/13 00:58
2F:→ MOONRAKER: 你有學過其他語言經驗嗎 03/13 10:43
3F:→ nono5938: 痾 c懂一點皮毛,所以用魔術方法真的會有什麼嚴重的問題 03/13 11:35
4F:→ nono5938: 嗎? 03/13 11:35
※ 編輯: nono5938 (119.14.168.131), 03/13/2017 11:36:59 ※ 編輯: nono5938 (119.14.168.131), 03/13/2017 11:37:38
5F:推 GALINE: 魔術方法的好處是你連單純的 get/set 都能用程式控制 03/13 12:30
6F:→ GALINE: 例如你有複雜的白名單機制,或是你內部存資料的方式跟外部 03/13 12:30
7F:→ GALINE: 介面不一樣,或是你需要對於 set 進來的東西加料,然後不 03/13 12:31
8F:→ GALINE: 想寫同樣的東西寫個五十次之類的 03/13 12:31
9F:→ GALINE: 有這種需求的話,就用吧。反過來就是沒這種需求就少用 03/13 12:31
10F:→ GALINE: 當然拿來實驗或把玩是沒問題的 03/13 12:31
11F:→ GALINE: 這東西有兩個缺點:code 可以變得很難 trace(看你怎麼寫 03/13 12:32
12F:→ GALINE: 然後有效能 overhead。當然大部分情況那個 overhead 還好 03/13 12:32
13F:→ GALINE: 但是有個很多人在用的東西被 magic function 搞到肥慢慢 03/13 12:33
14F:→ GALINE: 該死的 laravel... 03/13 12:33
15F:→ MOONRAKER: 一般物件導向語言教材都會先教getProp()/setProp() 03/13 12:34
16F:→ MOONRAKER: 你有幾個prop就寫幾組 03/13 12:35
17F:→ MOONRAKER: 一般也建議先習慣這樣 再用get/set這種動態語言的作法 03/13 12:37
18F:→ MOONRAKER: 在初學階段最好不要急著想怎麼節省程式碼篇幅 03/13 12:39
19F:推 GALINE: 我倒覺得初學試一下也不算壞事,試一下「喔喔喔喔好強」 03/13 18:58
20F:→ GALINE: 然後兩個月後「靠北這段 code 到底在跑三小」也是種體驗 03/13 18:58
21F:→ GALINE: 而且悟性好的人搞不好就摸出順眼的用法了 03/13 18:58
22F:→ GALINE: 只要不像是 laravel 一樣什麼都要過一次 magic 然後速度 03/13 18:59
23F:→ GALINE: 也讓人感覺很 magic....(對我就是吃 slim 這一套 =v=) 03/13 19:00
24F:→ nono5938: trace好像確實是個問題,但效能overhead是?不太明白怎 03/13 21:26
25F:→ nono5938: 麼會overhead有個什麼例子嗎? 03/13 21:26
26F:→ MOONRAKER: 進去method裏面再switch 跟要改哪個prop就叫哪個method 03/14 09:46
27F:→ MOONRAKER: 用聞的也知道是前面overhead比較多 03/14 09:47
28F:→ MOONRAKER: 當然現在php改良很多 是可以試一試 03/14 09:47
29F:推 GALINE: https://goo.gl/kljGuw 範例。裡面的數字是 PHP7,PHP5 會 03/14 11:19
30F:→ GALINE: 再慢個幾倍。基本上是個平常用兩下沒問題,但是被放到 03/14 11:19
31F:→ GALINE: 大迴圈裡面會有感覺的程度 03/14 11:19
32F:推 GALINE: PHP裡面New物件跟call function跟magic function都是相對 03/14 11:25
33F:→ GALINE: 昂貴的存在,比較過分的就像Laravel的ORM,對上千個物件 03/14 11:25
34F:→ GALINE: 做操作就明顯感到慢,我對這個怨氣很重 :/ 03/14 11:26
35F:→ GALINE: 當然能升級PHP7的話,升級可以解決很~多效能問題。 03/14 11:27
36F:→ GALINE: 但是實際工作很容易看到升不上7的code,還是得注意 03/14 11:27
37F:→ MOONRAKER: 最近看到的例子以5.3為主 老到5.1都有 X( 03/14 13:07
38F:→ nono5938: 好吧 多個switch好像是真的會影響到處理的進程,我大概 03/14 14:06
39F:→ nono5938: 瞭解優缺點了謝謝大家 03/14 14:06
40F:推 GALINE: 這麼慘,那有機會碰到十倍效能差距... 03/14 14:07
41F:→ GALINE: 我是覺得還是可以玩看看,畢竟用的好的時候可以做出超漂亮 03/14 14:08
42F:→ GALINE: 的介面... 03/14 14:08
43F:→ tkdmaf: 額外小提醒,在台灣請使用「變數」而不是「變量」這詞。 03/16 02:32
44F:→ nono5938: 有點被同化了 我是在youtube看一個大陸的影片學的QQ 03/16 13:19
45F:→ JohnRoyer: Laravel 裡面用的 reflection 應該也拖了不少速度吧? 03/22 20:29
46F:推 GALINE: Laravel 裡面做的能拖慢速度的黑魔法可多了... 03/24 11:05
47F:→ GALINE: 量很大才會痛就是了,一天一兩千人的程度不太有感覺 03/24 11:07
48F:→ GALINE: 我是背景要處理大量資料的工作用了Elquent ORM...好慢.... 03/24 11:07







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