这本书适合你吗?

    我认为每个有一定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这样的工具去分析并改进。
    这些工程管理方式,在以往实施代价可能很高,但是在现代却成了每个项目的标配。

《Modern PHP》读书笔记的更多相关文章

  1. csapp读书笔记-并发编程

    这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...

  2. CSAPP 读书笔记 - 2.31练习题

    根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1)  属于第一种情况 sum = x ...

  3. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  4. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  7. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  8. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  10. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

随机推荐

  1. 【docker】centos7 上拉取docker镜像,一直拉取不到,报错:Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while w

    镜像拉取一直报错: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request cancel ...

  2. JAVA学习之开发环境配置

    JAVA SDK 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 版 ...

  3. WPF绑定(Binding)(4)

    什么是绑定(Binding)? 在winform中, 我们常常会用到各种类型的赋值, 例如: button1.Text="Hello"; label.Text="Hell ...

  4. Centos7 python虚拟环境virtualenv和virtualenvwrapper简单介绍

    我的系统版本是 [root@localhost ~]# cat /etc/os-release 我的Python版本是 [root@localhost ~]# python3 -V 关于如何安装Pyt ...

  5. 用node发布一个包

    手把手教你用npm发布一个包 注:本文引用于简书 http://www.jianshu.com/p/36d3e0e00157   但是内容的话,还是一样的,也就是继续之前的工作,将那个autoRout ...

  6. 响应式开发 纯CSS实现隐藏菜单栏

    // 将要隐藏的菜单设置 display: block; // 然后在菜单上面设置一个点击选项,如“菜单”<label for="toggle-checkbox" id=&q ...

  7. TinyMCE基础配置

    选择器配置 插件配置 工具栏配置 菜单配置 皮肤配置 编辑区宽高配置 编辑区样式配置 隐藏状态栏 选择器配置 选择器就是CSS选择器,它告诉TinyMCE哪个元素是可编辑的. 示例: tinymce. ...

  8. iOS/Xcode异常:no visible @interface for XXX declares the selector YYY

    在iOS/Xcode开发过程中,出现如下异常信息: no visible @interface for XXX declares the selector YYY 分析原因: There are lo ...

  9. WEB图片水印实现

    很多大公司内网都有页面不可见水印,一旦图片截图发送给外部后,可以根据图片不可见水印进行溯源,查出发送人的信息. 原图:(就是下面白色的图片) PS 打开这个图片,在这个图片上新建图层,填充黑色,混合模 ...

  10. 轻量级.Net ORM SqlSuger项目实战

    SqlSuger,清垃圾ORM实战例子. //添加引用 using SqlSugar; //在构造函数中实例化SqlSuger clinet = new SqlSugarClient(new Conn ...