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/cn.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灯, 水草

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

TOP