写了一些比较少见的 PHP 教程,欢迎指正批评

2018 年 5 月 5 日
 elarity

一开始博客都是在 cnblog,大多数复制粘贴,一小部分是自己写,主要功能就是记录记忆功能

后来整理了一些有用的部分,然后自己又写了一些,基本都是关于 php 的多进程、socket 以及 stream 相关的一些教程,放到了 github 上,当然,目前还在继续更新中,这是一个长期的活儿。

github 地址: https://github.com/elarity/advanced-php

欢迎指出其中错误的地方!

13470 次点击
所在节点    PHP
104 条回复
uhohoo
2018 年 5 月 7 日
感谢 LZ 的分享,写得通俗易懂
至少让能 phper 接触到这方面的知识
至于能深入到什么程度,那就是个人的追求了
jinfeng333
2018 年 5 月 7 日
感谢分享 👍
GoPHP
2018 年 5 月 7 日
PHP 开发业务最快!
PHP 写多线程最好!
PHP 异步 IO 吊炸天!
PHPsocket 秒天秒地!

总结:PHP 是世界上最好的语言!
pzzrudlf
2018 年 5 月 7 日
感谢楼主的分享,这对于学习 PHP 大有裨益。
elarity
2018 年 5 月 7 日
@GoPHP

恕我直言,不敢苟同您的说法。
而且您前后言论似乎不一,不知道是不是出了什么问题。
lazypu
2018 年 5 月 7 日
@elarity 这种人, 阴阳怪气的
xmitman
2018 年 5 月 7 日
@GoPHP 戾气有点重了
FYK
2018 年 5 月 7 日
@chenxytw 您好啊,我想请教下您在 #58 的相关说法。

1. 关于 typed params 是指参数的类型声明?
2. 关于「把参数和返回值都包装成 class,这样子可以在定义函数时限定参数的 type 」是指?如果要限定函数参数的类型,我记得目前 php 是支持的,在参数名之前加类型即可,可能因为版本的原因,逐步引入更多类型,所以我们对此的印象不同也有可能。以及为什么要用类来包装参数和返回值,我这里完全不了解,连基本概念都没有,所以也不知道如何问才算是正确的,请问有相关的关键词可以帮助我去搜索吗?
wtcoder
2018 年 5 月 7 日
什么语言都好, 能解决问题是最关键的。 老板才不关心你用什么语言。

楼主至少用 PHP 帮很多人解决了现实问题,让很多人开阔了眼界。 先点个赞。

喷子们有这功夫,麻烦在你们的领域多创造点价值..
chenxytw
2018 年 5 月 8 日
@FYK
问题 1: 是的
问题 2: 在 php5 中,不支持将类型限定为 int, float, string, bool 等基础类型,这些是在 php7 中加进来的。
至于将参数包装为 class, 是一种仁者见仁智者见智的经验吧,也不是说要把所有参数都包装起来,是那些有需要的参数。
主要是有两个方面的考虑
1. 是在 php5 时期补完 typed params 的缺陷,毕竟 class 类型的声明是最早支持的,在 5.0 时期就支持了,比 array 还早
2. 是方便参数扩展,当然这个用 array 也可以完成,但如果考虑兼容的话,array 需要额外去做一些 default 值,isset 判断操作,虽然也可以包装成函数统一做,但个人认为用 class 继承一个统一的基类看起来更好看一些。
(不过缺点也很明显,就是会变得很罗嗦很冗长,所以一般我也就是把一些配置类的参数搞成这样子,
不过也和我接手的是老项目有关系,OO 的程度不是很高,没有很好的利用起来成员变量)
DiverRD
2018 年 5 月 8 日
说个题外话,v2 有些程序员智商是高,但是情商真的低得可怕,连交流都是一种障碍。我是 php 初学者,也是 php 受益者。php 给我在入行带来迅速的开发,诚然 php 是有一些缺点。甚至对比一些其他语言是致命的缺点。但 php 也有他的长处。php 可能不能擅长做某些事,但是并不代表他不能做某些事。作为 phper 真心不希望别人只看到 php 的缺点而不去关注他的优点。
另外楼主,一在 v2 友好的传播知识,二也没在贴里带节奏,为啥就要被攻击,如果真的这样,那分享知识还有意义吗?真的大佬早就熟悉几门语言。知道什么时间什么场景需要哪些语言去做擅长的事。
最后我想说,码仔何必为难码仔。

如果言论过于严厉,望轻喷。
suit
2018 年 5 月 8 日
干货很多,支持一下(有些看着好眼熟,总感觉在哪看过)
changwei
2018 年 5 月 8 日
我猜,如果楼主一开始就把 append 的自我介绍写在正文,估计下面都是一片“感谢”,“支持”,“已收藏”之类的回复了。
还有那些成天争论语言优劣,吐槽 php 是单线程,吐槽这个语言卡那个语言慢的人,估计 c 语言下都从来没有使用过 epoll.h,pthread.h,sem.h,也没学过编译原理吧。
把这些时间花在研究研究语言底层实现上,估计也已经成了一个大牛了。
sagaxu
2018 年 5 月 8 日
@chenxytw 我个人感觉,核心数据,服务间接口,返回 3 次以上的返回值类型,嵌套层数超过 2 层或者单层超过 10 个 key 时,可以考虑定义明确的类型。遗憾的是中高级 php 开发们似乎不大认同这种做法,他们还是能返回 array 的地方都返回了 array,class 只是用来聚合 method。像 Java 那样拒绝 map,处处定义 vo/dto 又是另一个极端。
elarity
2018 年 5 月 8 日
@chenxytw
@FYK

补充一下,参数传入对象以及执行返回对象,都可以使用对象来实现。 @FYK 你可以继承 arrayAccess 接口,使得对象本身也具备像 php 数组那样的使用方法,甚至可以使用__set 方法实现对元素类型的校验。
利用这些一些技巧,可以保证 php 返回的数据类型不会莫名其妙变化,导致敏感客户端的 crash

PHP 的数组很强大,强大到成了灾难,就像北方抗击沙尘绿化用杨柳,结果柳絮满天飞一样。
elarity
2018 年 5 月 8 日
@sagaxu 说的很中肯,大多数 phper 都是直接返回 array,array 再嵌套 array,如果是 web 编程还可能会好些,如果是 api 实现,客户端的人受不了。
lqlqdenm
2018 年 5 月 8 日
@elarity php 提供纯的对象 stdClass,或者 ArrayObject 对象需要类型返回的数据不错
respect11
2018 年 5 月 8 日
@GoPHP 不知道虎牙算不算 swoole 的一次应用
chenxytw
2018 年 5 月 8 日
@sagaxu 他们应用的 OO 程度太低了.....
还有就是有些人(包括我)受不了 Java 那种什么都要封装成 class 的做法.....
chenxytw
2018 年 5 月 8 日
@elarity 太过灵活了,就对代码质量有比较高的要求。。。不然就会 Bug 满天飞....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/452397

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX