您现在的位置是:休闲 >>正文
php关键字
休闲3人已围观
简介PHP里有个东西叫关键字,一共七十多个。它们不是函数,不是类,是语言本身定死的砖头。你写代码,绕不开它们,就像人活着绕不开呼吸。 我最喜欢的一个关键字是`yield`。这东西刚出来的时候,很多人看不懂 ...
PHP里有个东西叫关键字,键字一共七十多个。键字它们不是键字函数,不是键字类,是键字语言本身定死的砖头。你写代码,键字绕不开它们,键字就像人活着绕不开呼吸。键字
我最喜欢的键字一个关键字是`yield`。这东西刚出来的键字时候,很多人看不懂。键字它出现在函数里,键字但函数不返回一个值,键字而是键字返回一个生成器。每次执行到`yield`,键字函数就暂停,把值扔出去,等外面要下一个值了,再接着往下跑。像一台老式胶片放映机,一帧一帧地过,而不是一次性把整卷片子全倒给你。
写个例子。你要生成一万个数字,用数组得占内存,用`yield`就轻巧。函数里写个循环,循环里写个`yield $i`,外面foreach一拉,它一次只给你一个数。内存占用从几十兆降到几KB。这不是优化,这是本质上的不同。
`static`也是个有意思的关键字。在函数内部声明一个静态变量,函数调用完了,变量不销毁,下次调用还留着旧值。有人拿它做缓存,有人拿它做计数器。但用不好就是坑——比如你在递归里用静态变量,忘了清理,数据就串了。我见过一个同事,排查了三个小时,最后发现是`static`在作祟。他当时骂了一句:这破关键字怎么这么阴。
其实不是关键字阴,是它太诚实。它老老实实告诉你:我记住上次的状态了。是你自己没记性。
`global`这个关键字,现在很多人不待见它。因为它打破作用域,让代码变得不可预测。但PHP早期就是靠它撑起来的,那时候没有依赖注入,没有容器,你写个函数要访问外面的变量,就`global $db`一下,简单粗暴。现在框架讲究了,你几乎看不到`global`了,但它还在那儿,像老家村口的老槐树,没人乘凉了,但它没倒。
还有个关键字`finally`,配合`try`和`catch`用。不管前面的代码是成功还是抛异常,`finally`里的代码一定会执行。我写文件操作的时候特别喜欢它,因为不管中间出了什么幺蛾子,最后都要把文件句柄关掉。这就像你出门前锁门,不管今天心情好不好,门都得锁。
说个冷门的——`declare`。它有两个用途,一个是声明编码方式,一个是声明`ticks`。前者你见得多了,每个PHP文件开头都有。后者很少有人用,它可以让PHP在每个语句执行后触发一个事件。听起来很酷,但实际用起来性能损耗大,而且逻辑容易绕晕。我见过有人在代码里用`declare(ticks=1)`写了个调试器,跑起来慢得跟蜗牛似的,最后放弃了,改用`xdebug`。
关键字里也有危险分子,比如`eval`。它不算严格意义上的关键字,更像语言结构,但很多人把它当关键字看。它能执行字符串里的PHP代码,功能强大到可怕。但也正因为强大,它成了代码注入的最佳入口。只要用户输入能流进`eval`,你的服务器就裸奔了。我有个原则:代码里出现`eval`,除非有极其充分的理由,否则直接打回重写。
PHP的关键字里,有些是历史遗留,比如`var`,老代码里声明属性用的,现在被`public`、`protected`、`private`取代了。但你翻老项目,还是能看到`var`的身影,像旧衣服上的补丁,不好看,但那是时代的痕迹。
写PHP写了十几年,我越来越觉得,关键字就像汉字里的常用字。你认识它们,会写它们,但真正的高手,知道在什么语境下用哪个字,能让整句话活起来。`yield`用得好,代码流畅如溪水;`static`用得巧,性能提升一大截;`global`虽然土,但有时候它就是最直接的解法。
别小看这七十多个单词。它们是PHP的骨架,也是PHP的灵魂。你写的每一行代码,都站在它们的肩膀上。理解它们,你才算真正入了门。
Tags:
上一篇:golang开发工具破解版
下一篇:阿里云漏洞扫描
相关文章
外星人笔记本使用技巧
休闲外星人笔记本这机器,买的时候肉疼,用起来是真爽。但大多数人只把它当普通游戏本用,亏了。我手里这台m15 R7用了快两年,几个藏在系统犄角旮旯里的功能,能让你多榨出不少性能,甚至还能让风扇安静得像台办公 ...
【休闲】
阅读更多数据库漏洞有哪些
休闲2023年1月,某大型电商平台被曝出因一个未修补的SQL注入漏洞导致数百万条用户订单信息泄露,黑客仅凭一个精心构造的URL就拖走了整个数据库。这算是最经典的数据库漏洞——SQL注入,它至今仍稳坐漏洞排 ...
【休闲】
阅读更多java 防止ddos
休闲凌晨两点,我的服务器报警。流量图像心电图一样直冲天花板,CPU 100%,数据库连接池被榨干。查了下IP段,清一色来自某个云服务商的弹性IP,每秒请求数破万。这不是黑客炫技,是有人花钱买了DDoS攻击 ...
【休闲】
阅读更多