互联网时代,软件更新迭代很是之快,做为php开发人员,咱们也须要与时俱进,若是有条件的话,尽量的使用最新版的软件进行开发。好比,你如今就应该用php 5.3以上版本。php
废话很少说,今天和你们分享的就是,php开发人员必须了解的一些知识,若是你已经掌握了,那么恭喜你,你很优秀,若是你还没掌握或了解,那但愿本文的分享对你知识的丰富有帮助。node
1. PSRpython
PSR是PHP Standard Recommendation的简写,不少人觉得 PSR 只是作一些规范代码风格等无关痛痒的事情,但其实远不止此。正则表达式
PSR的标准文档都是由php-fig (PHP Framework Interop Group)起草和投*决议的,而投*成员中不乏一些主流框架和扩展的做者包括 Laravel、Symfony、Yii等等。而官方说法,这个组织的目的并非告诉你你应该怎么作,只是一些主流的框架之间相互协商和约定。相信这些框架和扩展中总会有你用到的。npm
PSR 目前经过的共有 6 份文档:composer
0:自动加载(主要是针对 PHP 5.3 之前没有命名空间的版本)框架
1:编码规范函数
2:编码风格推荐工具
3:Log 结果测试
4:自动加载更细(在出现命名空间后有很大的改变)
7:HTTP 消息接口
据悉,目前在起草(Draft)中的还有 PSR-5(PHPDoc Standard)、PSR-6(Cache)等。5 和 6 没有出如今以上的列表中,是由于尚未投*经过。
虽然看似和咱们平时的php代码编写关系不大,不是全部的标准都须要遵照,可是随着标准的不断更新,这些约定对你确定是颇有裨益的。
2. Composer
Composer 是php中的一种管理工具, 和 Pear、Pecl 都不一样,它不只仅是用于安装扩展,更重要的是定义了一种现代PHP 框架的实现和扩展管理的方法。相似 node.js 的 npm、Python 的 pip ,但又比以上作的更多。
Composer 的核心是实现扩展的标准安装和类的自动加载。经过 packagist.org 这个平台,无数的扩展组件能够被很方便的引入,目前比较知名的 PHP 扩展均可以经过 composer 安装了。而调用仅仅只须要加载一个 autoload.php 的文件便可。
composer 是经过 spl_autoload_register 方法注册一个自动加载方法实现扩展类和文件的加载的,固然这中间 composer 也作了一个优化。
众所周知, PHP 引入文件要经过 include 和 require 实现,这其实写起来并很差看。 PHP 5.3 提供了命名空间,这原本和文件引入也不相干。可是 composer 实现了 PSR-4(在老版本的 PHP 上是 PSR-0),使用 use 时经过调用 spl_autoload_register 实现的方法在调用时加载所须要的类,在写法上相似 Python 的 import,即美观也起到了按需加载、延迟加载的做用。
3. php-cs-fixer
php-cs-fixer主要是用于按照 PSR-1 和 PSR-2 的规范格式化代码,还有一些可选的编码风格是 Symfony 的规范,由于其成员大部分都是来自 Symfony 项目。其具体的使用和配置方法在官方文档上面都有介绍,这里就不在赘述。
或许有人会以为代码实现功能最重要,风格并非那么重要。其实若是想成为一名优秀的php开发工程师,相信能实现既定功能确定是远远不够的,还要能编写出高质量的代码,何谓高质量的代码,相信这个不用多说,你也清楚。
4. PsySH
PsySH是php中的一个相似于Python 的 IDLE的交互运行环境。这个在Laravel中常见,Laravel 5 的 artisan tinker 的功能就是经过它来实现的。PsySH还经常用于测试一些php 的简单的函数和特性。
5. 一些框架和组件
Laravel
Laravel是如今比较火的一个php开发框架,提到 Laravel 不少人都会立马想到 Ruby on Rails。其实模仿或者抄袭这都不是主要的目的,主要的目的是提供给开发者一个更好的工具。Laravel 好在它有一个不同的路由控制(不带 Action 后缀或前缀的),有一个好用的 ORM (Eloquent),好用的模板引擎 (Blade) 亦或有一个颜值比较高的文档等等。Larval 的核心实现是一个容器(Container)以及 PHP 的反射类(ReflectionClass)(Yii 2 也是同样)。
Symfony 2
Symfony 2 是php中提供了不少组件的框架。http-kernel 和 http-foundation 在 Laravel 中也有被继承过来直接使用。
CodeIgniter
CodeIgniter 是一个小巧而强大的PHP开发框架。虽然 CI 并无使用 Composer 组件的方式进行开发,但 3.0 之后的版本也加入了 Composer 的支持(这无非就是多一个 vendor 的目录,引入 autoload.php)的文件。
ORM
ORM 亦或 Active Record 我以为仍是须要的。也许有人认为 PHP 就是一个模板引擎、就应该手写 SQL 。请不要被这些话所困扰。
CodeIgniter 中 Active Record 的实现方式很轻巧,但对于 CI 自己的体量来讲,已是很好用的了。
Laravel 实现的 Eloquent,也能够集成到别的项目中去。Symfony 2 使用的是 Doctrine ,这个项目也值得关注。Yii 2也有本身的一套实现方式。
模板引擎
模板引擎主要是用于作这三件事情:
变量值的输出(echo),
条件判断和循环(if ... else、for、foreach、while)
引入或继承自其余文件
Laravel 实现的 Blade 是一个比较轻量好用的模板引擎。不过目前并非很好可以引入到其余框架中。
Yii 2 彷佛更推荐就用原生的 PHP 去写,不过也提供了支持 Smarty 和 Twig 的扩展。Symfony 2 则采用了 Twig。Twig 和 Symfony 以及上文提到的 php-cs-fixer 都是 SensioLabs 的做品。
Smarty 是一个古老而顽强的模板引擎,其语法相对复杂,变量赋值这些事情都有本身的一套作法。如今的版本中更是使用 Lexer 的方式来解析文件,感受像是用 PHP 实现了另一种语言。项目里面还有一些太长的正则表达式、太复杂的实现,使用很差,一件很容易出错的事情。