《性感的 PHP——现代化 PHP 开发》PPT 分享

2016-09-25 22:52:08 +08:00
 tanteng

(原文链接: https://www.tanteng.me/page/mordern-php

说好的把这次技术分享的 PPT 发出来的,一直没时间弄,现在整理了一下,并导出了一份 PDF 版的 PPT ,给大家参考。( PS :本次技术分享仅仅是介绍一些关于现代化 PHP 开发的技术,并不是讲某个方面的高深技术和经验,即便如此,针对目前的 PHP 现状,很多项目,公司和开发者,还在使用过时的 PHP 技术,这个分享还是有价值的)。

本次技术分享主要讲了一些现代化 PHP 开发的技术, PPT 重点介绍了命名空间,闭包,匿名函数, Traits 这些新特性,以及介绍了 Composer 依赖包管理器和 PSR 规范。

主要内容

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

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

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

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

PPT 下载地址

点此打开 PDF 版 PPT

5832 次点击
所在节点    PHP
43 条回复
tanteng
2016-09-25 23:02:39 +08:00
大家对现代化的 PHP 开发有什么看法,可以讨论
bdbai
2016-09-25 23:13:04 +08:00
为什么 PHP 非要扯上前端呢。
tanteng
2016-09-25 23:18:12 +08:00
@bdbai 这里只是带过一下, PHP 只是 WEB 语言之一, WEB 开发包括前端后端很多方面,也是回顾一下 WEB 开发所涉及的一些技术。
zqhong
2016-09-25 23:30:02 +08:00
tanteng
2016-09-25 23:30:59 +08:00
@zqhong 谢谢指正!已更新!
zqhong
2016-09-25 23:43:44 +08:00
PHP 语法新特性这里:
> $a = $_GET['a'] ?? $_GET[‘ a ’]:1;

似乎没这种用法?我猜您说的是这个:
> $a = $_GET['a'] ?? 1;

http://php.net/manual/en/migration70.new-features.php#migration70.new-features.null-coalesce-op
sunsh217
2016-09-25 23:55:23 +08:00
没有 postgresql, 不及格。退回去重写。
tanteng
2016-09-26 00:03:08 +08:00
@zqhong 你说的对,这里有误
tanteng
2016-09-26 00:03:15 +08:00
@sunsh217 😀
BMW
2016-09-26 08:53:37 +08:00
讲得有点过于基础了吧,这些不是应该是一个 php 程序员都需要掌握的基础概念么?
gouchaoer
2016-09-26 09:07:13 +08:00
请问你怎么看 laravel 性能底下以及过度包装导致的无法单步调试的问题?
enda
2016-09-26 09:16:22 +08:00
请问 CURL 为何归类在调试工具
frozenshadow
2016-09-26 09:21:29 +08:00
@gouchaoer 没用过 laravel 的请教一下:这么夸张?居然不能单步调试?
frozenshadow
2016-09-26 09:22:41 +08:00
再请问下 fiddler 和 curl 中间的小蜜蜂是什么。。。
stackboom
2016-09-26 09:38:27 +08:00
@frozenshadow firebug
Light3
2016-09-26 09:55:49 +08:00
@frozenshadow 应该是甲虫还是瓢虫吧..
firebug 一个插件比 F12 好看点? https://getfirebug.com/
tanteng
2016-09-26 09:57:33 +08:00
@BMW 这跟基础无关,而是 PHP 的开发方式,现在能用上这些的占比估计还是小部分,大部分公司还没用上。也许一年以后,这些还是“新”的东西。
tanteng
2016-09-26 09:57:51 +08:00
@enda 没地方放了,哈哈。
tanteng
2016-09-26 09:58:27 +08:00
@frozenshadow firebug
TangMonk
2016-09-26 10:13:17 +08:00
composer 每次只能 require 一个包,这点很难用。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/308896

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX