ModernPHP读后感

本文是作者阅读《ModernPHP》后的读后感,主要讨论了PHP的命名空间、接口、性状、生成器、闭包等核心特性,并探讨了它们在实际开发中的应用。作者强调了理解底层原理的重要性,如PHP的迭代器、错误处理和面向接口编程。此外,还提到了PHP的其他功能,如内置HTTP服务器、OPcache、错误和异常处理,以及测试和性能分析工具的使用。
摘要由CSDN通过智能技术生成

特性介绍

最近看了一遍ModernPHP,有不少收获,特此简单总结一番,记录下读后感受。


命名空间

刚开始学习开发PHP时,基于ThinkPHP3.1版本实践,并没应用到命名空间这个玩意儿,在偶尔看博客的时候会有提到,但是觉得好像也没多大意义。这里我的感受是,基于框架写项目能提高开发效率,同时能帮助解决很多系统运行问题,比如记录系统分析日志、渲染模版文件、实现ORM映射、路由等等。但是不可过度依赖框架,一想到数据库连接,第一反应是M();一想到页面展示,就又冒出display()。那么脱离框架本身,我们好像就变得无所适从。

不过依然是在偶然间接触到了ThinkPHP5,发现命名空间变得无处不在了。那么它到底有什么用呢?一番简单研究后,发现这就类似于Java语言的package。是为了划分项目的目录结构,即时存在相同的类名,只要拥有各自的命名空间,即可互不干扰的被使用。
在学习过composer的自动加载过程后,我觉得可以描述过程:在new新对象时,触发到我们自定义的__autoload函数,携带类名参数(包含命名空间),接着根据命令空间去映射到一个实际的文件路径。所以定义在前,加载在后,我们在项目中要做的,就把实例然后使用。


接口

在看到这章的时候,我就在想,到底如何更好地使用PHP接口呢?这个问题其实困扰了我好久。先说下我初步了解到的Java,比如Dao、Service,都是先定义一个interface,继而按照其定义规则实现业务。而在如今,我不知道是不是受限于框架、还是受限于业务,接口给我一种可有可无的作用。抽象类我还偶尔有用,为了对一些方法做封装,也不想这个类被实例,觉得还是有点好处。那么对于接口,之前在实现一个项目时,我预定义了一个接口,原意是希望后面的逻辑类都基于此结构,实现一些必要的准则,但是慢慢发现,同时准则是实现了,却都没有去继承。其实这时候我就觉得,或者真的是业务限制了使用,也或者是因为PHP是动态类型语言,在传参时不用定义类型。目前我暂没能抓住面向接口编程的精髓。讲了有力使不上的情况,再来聊聊好用的玩意儿。Monolog日志库内存在许多的handler,虽然handler实现出来的效果有很大不同,有的输出到文本文件、有的输出到邮箱、有的输出到syslog。它们都是通过write()写入,close()写出,记录方法皆为标准的warn、debug等等,如此使用接口就像是理所当然的事情了。

顺便一提,在看到迭代器的时候,发现要实现foreach遍历,得基于Iterator接口。不继承居然实现不了迭代功能。
http://www.laruence.com/2008/10/31/574.html
看了鸟哥文章后,才认识到原因。若类继承了Iterator接口ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值