现代化PHP开发

主要内容

PHP 正在重生。作为一门专注WEB开发的语言,它不断吸取其他语言的优点,如命名空间,闭包,性状,操作码缓存等特性,PSR 规范和Composer 包管理以及 PHP 7 的性能提升,PHP 正在变成一门现代化的语言,让我们一起聊聊 PHP 有哪些新的变化!

  • 命名空间
  • PSR规范
  • 闭包和匿名函数
  • Trait
  • Composer包管理器
  • 语法新特性
  • PHP 7性能
  • Laravel框架介绍

全面的PHP技术堆栈图

我们先来回顾一下 WEB 开发所用到的技术和工具,这里的PHP可以替换为 Python,Java,.NET 等其他语言,因为 PHP 只是一门语言,而WEB开发的本质是一样的。我们的重点是掌握PHP本身,和它密切相关的如 MySQL,Nginx/Apache,Linux,前端方面至少熟悉 jQuery, css 等,但是当项目规模越来越大,并发量越来越高,我们就要用到 Redis,Memcache 等缓存技术,总之,我们要学的东西越来越多,才能满足高性能的 WEB 开发。这里只是列举了比较常用的技术和工具,欢迎大家进行补充。

命名空间

PHP一个重要的改变,就是引入了命名空间。命名空间是使PHP成为一门现代语言的重要特性,它不仅解决了第三方扩展包的类命名冲突的问题,还提供了良好的代码组织的方式,并且通过它进行自动加载。

如 PHP 手册里所描述,命名空间好比操作系统中的目录,两个同名的文件可以共存在不同的目录下。同理两个同名的 PHP 类可以在不同的 PHP 命名空间下共存,就这么简单。

因此把你的代码放在你的命名空间下就非常重要,避免其他开发者担心与第三方类库冲突。

PSR 规范

PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。

PHP FIG,FIG 是 Framework Interoperability Group(框架可互用性小组)的缩写,由几位开源框架的开发者成立于 2009 年,从那开始也选取了很多其他成员进来(包括但不限于 Laravel, Joomla, Drupal, Composer, Phalcon, Slim, Symfony, Zend Framework 等),虽然不是「官方」组织,但也代表了大部分的 PHP 社区。

项目的目的在于:通过框架作者或者框架的代表之间讨论,以最低程度的限制,制定一个协作标准,各个框架遵循统一的编码规范,避免各家自行发展的风格阻碍了 PHP 的发展,解决这个程序设计师由来已久的困扰。 自动加载规范非常重要,PHP 组件都遵循自动加载规范,才能通过 Composer 进行管理。

Composer包管理器

Node.js 有 npm ,Python 有 pip,现在 PHP 有了 Composer,Composer 是 PHP 的一个包(PHP 组件)管理器,这些组件遵循 PSR 规范,因此可以快速应用到你的项目中,而且可以开源共同维护。

PHP组件具备以下特点

  • 作用单一:专注于解决一个问题,而且使用简单的接口封装功能
  • 小型:小巧玲珑,只包含解决某个问题所需的最少代码
  • 合作:PHP组件之间可以良好合作,组合在一起实现大型项目
  • 测试良好:本身提供测试,而且有充足的测试覆盖度
  • 文档完善:应该提供完善的文档,能让开发者轻易安装、理解和使用

PHP 新语法

PHP 5.6 —— PHP 7 提供了很多新的语法和特性,如闭包和匿名函数,Traits,运算符简写方式,数组简写方式,类型约束等等。

学习现代化 PHP 开发的最好方式

学习现代化 PHP 开发的最好方式是学习现代化的开发框架,如 Laravel,这些新的 PHP 概念和语法,以及 Composer,都在框架中广泛使用,并且还可以学习到很多有关设计模式的知识。

回复“现代化PHP开发”即可

原文发布于微信公众号 - 竹清助手(zhuqing_help)

原文发表时间:2016-10-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小樱的经验随笔

linux bash Shell脚本经典 Fork炸弹演示及命令详解

Jaromil 在 2002 年设计了最为精简的一个Linux Fork炸弹,整个代码只有13个字符,在 shell 中运行后几秒后系统就会宕机: :(){:|...

35350
来自专栏Java进阶架构师

dubbo专题-深入分析zookeeper连接原理

上篇的dubbo源码解析-远程暴露中讲解了远程暴露的大致过程,但是期间大家也发现了,这个过程涉及到了很多分支,比如netty,zookeeper.当然设计模式就...

75320
来自专栏企鹅号快讯

Java程序员修炼之路线程篇之终篇

Java程序员修炼之路线程篇之终篇 在头条上撰写了20多篇关于java线程的文章,收获了很多读者的肯定和鼓励,在此表示感谢!特别感谢持续关注我,转发我的文章并给...

20680
来自专栏漫漫全栈路

【译】助你成功搭建云应用的12条方法

原文作者:Rafael Benevides 原文地址:https://dzone.com/articles/12-factors-to-cloud-succes...

31390
来自专栏双十二技术哥

组件化实践详解(一)

具体实施一项技术项目之前我们会首先确定对应的目标,之后的行动计划都会朝着目标一步步靠拢。

8220
来自专栏腾讯IVWEB团队的专栏

如何搭建高质量、高效率的前端工程体系--页面结构继承

本系列文章将会将会围绕整个前端的开发流程出发解决这两个问题,帮助大家提高产品质量以及开发效率。本文介绍页面利用类似的继承方式以便达到页面结构以及数据重用。

1.3K00
来自专栏卡少编程之旅

REACT框架学习心得

36070
来自专栏喵了个咪的博客空间

phalcon-进阶篇1(过滤与清理)

#phalcon-进阶篇1(过滤与清理)# ? 本教程基于phalcon2.0.9版本 ##前言## 先在这里感谢各位phalcon技术爱好者,我们提供这样一个...

31380
来自专栏WeTest质量开放平台团队的专栏

iOS微信内存监控

本文介绍如何实现离线化的内存监控工具,用于 App 上线后发现内存问题。

1.5K50
来自专栏王清培的专栏

数据分表小结

本次拆分主要包括订单和优惠券两大块,这两块都是覆盖全集团所有分子公司所有业务线。随着公司的业务飞速发展,不管是存储的要求,还是写入、读取的性都基本上到了警戒水位...

11600

扫码关注云+社区

领取腾讯云代金券