PHP新手开发者的路线建议
前言
在前天(2018-08-02
)已经发布了PHP 7.3.0.beta1 Released
如果你还没有使用 PHP7 ,那真的很遗憾。2018年PHP开发者应该熟练使用 PHP7,并且知道版本更新内容。
使用Composer
如果你在想使用一个扩展包时,还在下载源码,并尝试修改命名空间来嵌入你的项目中,你应该改变了。
至少应该使用 Composer 进行依赖管理,可以看看我以前写的 《使用Composer管理依赖》
现在的扩展包基本都支持 Composer 安装,你也可以尝试在 Packagist 上发布一个自己的包,可以对包管理的理解加深
使用Guzzle
Guzzle 是一个 PHP 的 HTTP 客户端,用来轻而易举地发送请求,并集成到我们的 WEB 服务上。
它的优点有构建查询语句、POST
请求、分流上传下载大文件、使用 HTTP cookies
、上传 JSON
数据等等。
《Guzzle中文文档》
使用Carbon
Carbon 是一个继承于 PHP 的 DateTime
类的时间类,让用法更加人性化
可以让你在处理时间时事半功倍,可以看看我以前写的 《使用Carbon》
使用MongoDB
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
以 MongoDB 作为非关系型数据库的开始非常好,可以看 《PHP7操作MongoDB》
使用Redis
Redis 是一个可基于内存亦可持久化的日志型、Key-Value
数据库,常用于需求不高的队列,很多框架内置了。
使用Docker
Docker 是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
对开发和运维人员来说,最希望的就是一次性创建或配置,可以在任意地方正常运行。
使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 DockerFile
来进行镜像构建,并结合 持续集成系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署系统进行自动部署。
而使用 DockerFile
使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。
Docker 入门可以从这里开始 《什么是Docker》
持续集成
持续集成 CI(Continuous integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
集成工具很多,流行的有 Jenkins,Travis CI
我博客用的是 AppVeyor:《使用AppVeyor持续集成本博客》
代码风格
良好的代码规范可以提高代码可读性,降低团队沟通维护成本。
PSR(PHP Standard Recommendations)是 PHP 标准规范 ,是 PHP 开发的实践标准。
其中 PSR-1 和 PSR-2 是编码风格规范。
StyleCI 提供 PHP 代码风格持续集成服务
单元测试
测试对于程序员的重要性不言而喻
PHPUnit 是 PHP 单元测试包,由 Sebastian Bergmann 开发
Laravel 有开箱即用的测试: 《在Laravel中测试》
微信开发
PHP 由于它的特点,在开发微信上非常方便,也被作为开发首选。
对于未接触过 OAuth2.0 或者是不理解 RESTful API 的开发者,这是一个很好的学习机会,开发中看看官方文档就可以了
《微信公众平台文档》《微信支付文档》《企业微信开发文档》
API 开发也可以看看《我所理解的接口设计》
设计模式
在 Laravel 中你可能会接触到 依赖注入
、Facade
、服务容器
等概念,可以扩展阅读一波,
包括创建模式(Creational Patterns)、架构模式(Structural Patterns)、行为模式(Behavioral Patterns)
其它
开发中应该遵循的《SOLID原则》,它来自于 PHP 代码简洁之道 ( PHP Clean Code)
MySQL 是 PHP 开发者接触最多的数据库了,这篇文章讲解了通过分库、分表等方式来《MySQL优化》
需要了解的《什么是 JWT》
数据结构与算法 是一个程序员必需的内功(PHPer 对于这方面要自己判断)
当然,在技术愈加熟练后,掌握一门新的语言,或是往全栈发展(利弊需要自己分析)也是很好的。
对 Web 开发者来说语言推荐 Python 和 Golang ,全栈的选择非常多,推荐热门的 Laravel+Vue.js+ElementUI