这本书适合你吗?

    我认为每个有一定PHP开发经验的人都应该读读这本书,因为正如书中的前言所说:
“网上有成千上万的PHP教程,其中大多数都已经过时了,展示的是陈旧的实践方式。可是,谷歌的搜索结果给出的仍然是这些教程。过时的信息对马虎的PHP程序员是危险的。他们在不知不觉中就会创建速度慢,且不安全的PHP应用。”
   这本书对现代PHP开发的正确实践做了系统的梳理。对于开发者而言,只要跟着目录,掌握目录提到的每一部分,功力就能大有长进。不论看不看此书,光看目录就很有收获。
    这反过来也说明这本书涉及面很广,目录中的每个大章单独来个上百页其实都不算多。因此这本200多页的书,只能够做到对每部分提了下重点,指引个方向,并不会深入浅出地教读者去掌握这些知识,读者还是需要阅读各种额外的材料。比如谈到布署时,就一定会谈到nginx,php-fpm和系统管理,虽然这是本PHP的书,但是这些知识也是必要的。
    这样的书,适合有丰富经验的PHP开发者,书中每一章的知识基本都掌握了,阅读起来轻松愉悦。对于PHP新手而言,缺了太多预备知识,想完整地读下去其实是很困难的,看看目录就好了。
 

现代PHP为什么重要?

    3年前,我刚转做WEB开发,用PHP做了几个小网站、公众号和WEB APP以后,对PHP的印象可以用4个字形容——累觉不爱。
    从手动引入自己写的代码文件,到引用产品的某个函数,到记录日志,到缓存数据,到发邮件不卡住,每换一个产品,这些基础的问题都要重新解决一遍,重复开发基础的功能(比如日志),重复写机械的代码让我实在很崩溃。
    在我的观念里,软件开发不应该这样的,应用层面的软件开发发展到今天,开发者应该可以做到将注意力集中在在业务问题上,而不是再陷入语言特性和基础设施上。有一段时间我很矛盾,是否该考虑转向JAVA、Python、Node试试了。
    现代PHP的出现,结束了这个矛盾的过程,那些前面令人饱受煎熬的问题,都得到了解决。
    包管理、自动加载,PSR标准,以及日志、缓存、队列、命令行作为基础设施的组件,使得这个古老的语言脱胎换骨。在有了这些现代化特征后,我才第一次感觉到自己是在关注业务,而不用像之前为了让发送邮件不卡住而专门写一个简易队列。
    因此,现代PHP之所以重要,就在于它将你从重复劳动中解放出来,将注意力更多地集中在具体的业务上。
 

现代PHP到底现代在哪里?

    我认为现代是体现在2个方面:
    1.开发:关注业务;
    2.工程管理:测试、部署、分析都有标准化的工具;

开发:关注业务

    在前面“现代PHP为什么重要”其实对这个问题已经有了一定的探讨。现代PHP的包管理、自动加载、PSR标准,以及日志、缓存、队列等各种组件,都是为了让开发者可以将注意力集中在解决业务问题上。       
    没有这些现代化特征,实际开发最容易碰到的问题就是重复开发基础功能。比如写日志时,发现没接口,于是自己实现一套简易的;发邮件不想阻塞请求,于是自己写了一个简易队列。花在写基础设施的时间比花在解决具体业务的时间都多。而且还不稳定。

工程管理:测试、部署、分析都有标准化的工具

    “在过去,常见的做法是编写一个PHP文件,使用FTP上传到生产服务器,然后祈祷它能正常运行。这种开发策略非常可怕,但又必须这么做,因为当时没有可用的本地开发环境。”  
    WEB开发是个工程管理问题比技术问题多的领域,沿用上述的这种工程管理策略,能把自己玩吐血。我们现在都要求采用git做代码管理,在代码推送完成后通过CI/CD自动完成测试和布署。如果布署有问题,则要立刻回滚。而在性能分析上,则通过xhprof或者new relic这样的工具去分析并改进。
    这些工程管理方式,在以往实施代价可能很高,但是在现代却成了每个项目的标配。

最新文章

  1. IE、FF、Chrome浏览器中的JS差异介绍
  2. JavaScript parseInt() 函数
  3. Unity中使用多构造函数(转)
  4. 提高生产性工具 - Model代码生成器(二)
  5. 深圳浩瀚技术有限公司(haohantech)推出的无线移动批发管理PDA解决方案------无线移动POS销售开单系统
  6. leetcode面试准备: Jump Game II
  7. SqlServer死锁与阻塞检测脚本
  8. Excel——使用VLOOKUP函数关联跨工作薄数据
  9. 每天一个linux命令(36)--vmstat命令
  10. Spring Boot-------项目搭建及注解
  11. 如何使用 libqr 库生成二维码?
  12. 【Troywar love Maths】——莫比乌斯反演
  13. SSM整合Netty5.0详细说明
  14. vue 限制输入字符长度
  15. 2018-11-29 VS Code英汉词典插件v0.0.6-改为TS实现, 加测试
  16. Android测试(二):Android测试基础
  17. 使用JavaMail发送邮件-从FTP读取图片并添加到邮件正文发送
  18. 17秋 软件工程 第六次作业 Beta冲刺 Scrum2
  19. Balloons
  20. QQ gtk,bkn算法

热门文章

  1. HTML模版大全网
  2. vs 发版时,在发版的文件夹中,找不到应该有的某个文件
  3. 自己对Thread的一些看法;
  4. C++中的Point类与vector类的简单处理
  5. Java常用类object详解
  6. Extjs 树菜单的自动展开数据的请求
  7. bugku秋名山老司机+写博客的第一天
  8. bugku insertsql
  9. FPM十一:点击POPUP显示明细
  10. java 使用tess4j实现OCR的最简单样例