这本书适合你吗?

    我认为每个有一定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. 记一个netcore HttpClient的坑

    异常信息 The SSL connection could not be established, see inner exception ---> AuthenticationExceptio ...

  2. NoSQL之redis用法

    什么是NoSQL? 泛指非关系型的数据库 不支持SQL语法 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是Key-Value(即键值对关系)形式 NoSQL的世界中没有一 ...

  3. webform 的路由

    webform是怎么通过url找到对应handler的呢? mvc 和webapi的路由都是通过注册到RouteTable.Routes中,然后在urlroutingmodule中路由到对应route ...

  4. ALBERT+BiLSTM+CRF实现序列标注

    一.模型框架图 二.分层介绍 1)ALBERT层 albert是以单个汉字作为输入的(本次配置最大为128个,短句做padding),两边分别加上开始标识CLS和结束标识SEP,输出的是每个输入wor ...

  5. 机甲大师S1机器人编程学习

    机甲大师 S1(RoboMaster S1)是大疆新出的教育机器人,很期待.S1支持Scratch和Python编程.(Scratch是麻省理工学院的“终身幼儿园团队”(Lifelong Kinder ...

  6. 性能测试-MySQL性能查看(转)

    mysql查看数据库性能常用命令 mysql> show global status; 可以列出MySQL服务器运行各种状态值,另外,查询MySQL服务器配置信息语句: mysql> sh ...

  7. spring项目使用mave将第三方jar包打进war包中

    背景:一个标准的ssm项目,需要使用到第三方jar,现需要将项目发布到liunx的服务器上,将项目打成war包,第三方war包也需要打进去 首先是直接打包,发现第三方jar包并没有打进去......蛋 ...

  8. springboot集成spring data ElasticSearch

    ES支持SpringBoot使用类似于Spring Data Jpa的方式查询,使得查询更加方便. 1.依赖引入 compile “org.springframework.boot:spring-bo ...

  9. linux 下首次使用github 和其中遇到的问题

    1首先安装git sudo apt-get install git 2配置git文件 git config --global user.name "你的用户名" git confi ...

  10. 团队第四次作业:alpha1发布成绩汇总

    一.作业题目 团队第四次作业:alpha1发布 二.作业评分标准 博客评分规则(总分100)博客要求 给出开头和团队成员列表(10') 给出发布地址以及安装手册(20') 给出测试报告(40') 给出 ...