PHP框架基础知识及2020年最流行的PHP框架

PHP框架

进行Web项目开发,除了HTML,CSS和JavaScript之外,大部分人可能会首先想到的是PHP语言。与一些流行的看法相反的是,PHP尚未死。甚至被网站广泛使用,包括Facebook和Wikipedia等全球知名的企业。

根据W3Techs的说法,PHP在所有的网站程序中约占79%的比例。在服务器端编程语言中将近竞争对手ASP.NET的八倍。在过去的一年(2019.9-2020.9)中,PHP的使用份额维持在近80%占有率。

PHP近一年的市场占有率

PHP近一年的市场占有率

一般情况下,PHP程序员经常会借助PHP框架来编写代码,而不是从零开始。那么什么是PHP框架,为什么要使用它们,及与大家分享一些最受欢迎的PHP框架。

什么是PHP框架?

PHP框架是用于创建PHP类型的Web应用程序的平台。PHP框架提供了常用功能的代码库,从而减少了开发人员需要编写的原始代码量。

为何使用PHP框架?

与从零开始编写代码相比,使用PHP框架有很多充分的理由。

1.更快的开发效率

由于PHP框架提供内置的库和工具,因此开发所需的时间更少。

例如,CakePHP框架提供Bake命令行工具,该工具可以快速创建应用程序中所需的任何框架代码。几个流行的PHP框架集成了PHPUnit库,以便于测试。

2.减少编写代码量

使用框架内置的功能意味着您不需要编写太多原始代码。

3.常见任务库

开发人员在Web应用程序中需要执行的许多任务是常见的。示例包括表单验证,数据清理和CRUD操作(创建,读取,更新和删除)。您不必为这些任务编写函数,而是直接使用框架中的提供的函数即可。

4.遵循良好的编码习惯

PHP框架通常遵循最佳编码实践。例如,它们根据功能将代码整齐地划分为多个目录。

Symfony默认目录结构

Symfony默认目录结构

有了这样的标准规范,程序员自然而然以更简洁,更整齐且更易于维护的方式组织管理代码。

框架还明确了程序员应遵循的针对实体的命名约定。

5.漏洞更少代码更加安全

有许多PHP安全威胁,包括跨站点脚本编写,SQL注入攻击和跨站点伪造请求。除非参与代码编写的所有人员都能够采取正确的步骤来保护代码,否则使用PHP编写的Web应用程序将很容易受到攻击。

使用PHP框架不是说100%的安全,但可以最大程度地减少黑客利用的机会。毕竟优秀的PHP框架提供内置的数据清理功能,并且及时得到良好的维护,可以防御上述常见威胁。

6.便于技术团队合作

如果不明确,存在多个开发人员的项目可能会在以下要点出错:

  • 文献资料
  • 设计决策
  • 规范标准

使用框架可以为项目设立明确的基本规则。即使其他开发人员不熟悉该框架,他们也应该能够快速学习并进行协作。

7.易于维护

PHP框架鼓励代码重构并提倡DRY(Don’t Repeat Yourself))开发。产生的精简代码库需要较少的维护。

您也不必担心维护核心框架,参与框架维护的开发人员已为您完成了这一工作。

使用PHP框架前的准备

使用PHP框架之前,您需要了解的第一件事就是PHP本身!如果您对该语言本身就不清楚,那么将很难选择哪一个框架。大多数框架都在PHP 7.2或更高版本上运行。

如果您是PHP语言的初学者,可以参考以下网站深入了解:

接下来,您应该已经构建了一些自己的PHP应用程序,因此您要前端和后端的要求有较清晰的了解。

PHP面向对象编程-大多数PHP框架都是面向对象的。确保您了解类,对象,继承,方法,特征和访问控制修饰符之类的概念。

数据库与SQL语法-由于许多Web应用程序都连接到数据库,您还应该对数据库和SQL语法进一步熟悉了解。每个PHP框架都有其自己的受支持数据库列表。

对象关系映射(ORM)模型-ORM是一种使用面向对象的语法而不是使用SQL访问数据库数据的方法。这意味着您可以使用熟悉的PHP编写数据库查询,尽管有时可能要使用SQL。

许多PHP框架都有自己的内置ORM。例如,Laravel使用Eloquent的ORM。其他框架则使用开源ORM,如Doctrine

网络服务器的工作方式-了解Apache和Nginx等网络服务器的工作方式将很有帮助。因为开发人员可能需要在服务器上配置文件,以使应用程序获得最佳运行。

本地环境搭建-可能会在本地进行开发测试,因此对localhost也要有一定的了解。又或者使用Vagrant和VirtualBox搭建虚拟环境,创建和测试Web应用程序。(相关文章阅读:2020年最新版本WordPress本地环境搭建与安装教程

模型-视图-控制器架构

PHP框架通常遵循模型-视图-控制器(MVC)设计模式。该概念将数据的处理与其表达分开。

模型-视图-控制器逻辑流程

模型-视图-控制器逻辑流程(图片来源:Wikimedia Commons

模型(Model )存储业务逻辑和应用程序数据。它将数据传递到视图(View),表示层。用户(USER)与视图进行交互并且可以通过控制器(Controller)输入指令。控制器将这些命令传递给模型,然后循环继续进行。

简而言之,模型与数据有关,视图与外观有关,而控制器与行为有关。

关于MVC模式的一个贴切比喻是在酒吧点一杯鸡尾酒。

用户是需要到达酒吧(视图)的顾客。用户将他们的饮料订单交给调酒师(控制器)。

调酒师根据配方,配料和设备(模型)制作订单需求。根据鸡尾酒的不同,他们可能会使用以下任何一种或其他物品:

  • 果汁
  • 柠檬
  • 玻璃
  • 鸡尾酒摇杯
  • 橄榄
  • 搅拌器

鸡尾酒成品放在酒吧上供User享用。如果User想要再喝一杯,他们必须首先与Controller交谈。他们不允许进入Model并自己调制饮料。

用PHP应用程序术语,MVC可以对应以下内容:

  • 模型:数据库
  • 视图:一个或多个HTML页面
  • 控制器:用于访问和更新数据库的功能

使用PHP框架时,习惯使用命令行界面(CLI)会有所帮助。Laravel有自己的CLI,Artisan Console。使用Artisan中的make命令,您可以为项目快速构建模型,控制器和其他组件。

熟悉命令行也是使用Composer的PHP包管理器的关键。Yii框架则使用Composer来安装和管理依赖项(即应用程序运行所必需的包)。

Packagist是可以与Composer一起安装的主要存储库包。一些受欢迎的Composer包经常会跟Symfony框架联合一起运行。

Packagist热门Packages包

Packagist热门Packages包

如何选择PHP框架?

在为项目选择最佳的PHP框架时,需要考虑以下因素。

首先,如果您不熟悉PHP框架,建议选择学习曲线不太陡峭的框架。尤其是框架如果太难掌握,您又不想花费宝贵的时间来学习。

然后,您需要一个易于使用并节省时间的框架。

PHP框架应满足您对项目的技术要求。大多数框架都会最低的PHP版本要求和可以使用的某些PHP扩展。确保选择的框架支持您希望使用的数据库,并且可以将该框架与要部署到的Web服务器一起使用。

选择具有适当功能平衡的框架。功能丰富的框架适用于某些比较复杂的项目。如果不需要太多功能,则选择精简实用的框架。

框架必要的一些功能是:

  • 测试
  • 缓存存储
  • 模板引擎:使用PHP类在HTML中输出PHP的方法
  • 安全

如果您需要构建可扩展的应用程序,请选择一个支持此功能的框架。

最后,PHP框架拥有良好的文档和支持很重要,如果网上可参考学习资料少之又少,建议不要采用此框架。存在活跃的社区的框架更有可能经受住时间的考验,并且在遇到困难时也能够为您提供帮助,活跃的社区证明该框架得到大量的技术人员支持。

2020年最流行的PHP框架

PHP发展至今,我们很难去整理出全球现有的PHP框架产品列表清单。单Wikipedia网站整理列出的就有40个PHP框架,并且其中一些框架可能称之为内容管理系统更适合些。

早期的PHP框架包括PHPlib,Horde和Pear。现在,大多数知名框架都在2005年或之后推出。下面将列举当今使用的一些最好的PHP框架。

Laravel

laravel

Laravel

Laravel被称为“ Web工匠的PHP框架”,由Taylor Otwell开发的,该框架包含CodeIgniter所没有的元素,例如用户身份验证。

配置指南

始于:2011年6月

当前版本:v8,发布于2020年9月8日。

技术要求:

  • PHP> = 7.2.5(或使用Laravel Homestead)
  • 已安装Composer
  • 数据库支持MySQL 5.6 +,PostgreSQL 9.4 +,SQLite 3.8.8 +,SQL Server 2017+。

Laravel的优点

Laravel Homestead很容易上手,一个为您量身定制的虚拟开发环境。

Laravel Homestead是一个官方预先封装好的Vagrant box,为开发人员提供一个绝佳的开发环境,而无需开发人员在本地计算机上安装PHP,Web服务器和任何其他服务器软件。无需担心搞砸您的操作系统!

如果是Mac用户,还可以选择使用Laravel Valet作为开发环境。顺便提一下,Laravel Valet支持Symfony,CakePHP 3,Slim和Zend以及WordPress。

Laravel使用名为Blade的模板引擎。与其他模板引擎相比,它具体的一个优点是可以在Blade中使用PHP,而其他则无法做到。

Packalyst是Laravel包的集合,其中包含超过15,000个可以在项目中使用的包。

Laravel提供了一系列安全功能和方法,包括:

  • Authentication(认证方式)
  • Authorization(授权)
  • Email verification(电子邮件验证)
  • Encryption(加密)
  • Hashing(散列法)
  • Password reset(重设密码)

Laravel的Eloquent ORMFluent Query Builder使用PDO参数绑定来防范SQL注入攻击。默认情况下,也会启用使用隐藏的CSRF表单令牌的跨站点请求伪造(CSRF)保护。

Laravel使用的Artisan Console命令行工具通过允许开发人员自动执行重复任务并快速生成框架代码来加快开发速度。

当进行PHP基准测试时,Laravel是目前尝试过的最快的PHP框架。

Laravel生态系统提供了不少有用的工具,例如用于编译CSS和JS的Mix和用于OAuth身份验证的Socialite

Laravel受益于庞大的开发人员社区:

  1. Laracasts:一个包含课程,博客,播客和论坛的学习门户。
  2. Laravel.io:一个拥有超过45,000个用户的社区门户。
  3. Laravel subreddit:50,000名Laravel工匠的家。

哪些企业/项目在用Laravel?

Symfony

symfony

Symfony

Symfony既是一个PHP框架,又是用于搭建网站的PHP组件集合。

配置指南

始于:2005年10月

当前版本:5.1.4

技术要求:

  • PHP> = 7.2.5
  • 已安装Composer

Symfony的优点

对于需要可扩展的网站和应用程序,Symfony是一个绝佳的选择。它的模块化组件系统非常灵活,可以让您选择项目所需的组件。

Symfony支持主流PHP框架中的大多数数据库

  • Drizzle
  • MySQL
  • 甲骨文
  • PostgreSQL
  • SAP Sybase SQL Anywhere
  • SQLite
  • SQLServer

与数据库交互的最佳方法是通过Doctrine ORM。Symfony使用数据映射器将对象映射到数据库。这使对象模型和数据库架构保持分离,这意味着如果更改数据库列,则无需在代码库中进行逐一更改。

使用内置工具栏,调试Symfony项目非常简单。

Symfony使用Twig模板引擎,该引擎易于学习,快速且安全。

Packagist列出了4,000多个Symfony包供技术人员下载和使用。

Symfony还得到了Sensio Labs的商业支持。这意味着可以提供专业支持,这与大多数其他PHP框架不同。它还提供3年更新维护的长期支持版本。

Symfony开发人员可以通过多种渠道获得培训和帮助:

此外,Symfony社区也非常庞大,至少有60万开发人员参与。

哪些企业/项目在用Symfony?

还有一些知名公司在他们的项目中使用Symfony组件,包括Drupal, Joomla和Magento。

CodeIgniter

codeigniter

CodeIgniter

CodeIgniter框架仅需简单的配置,即可帮助技术人员快速构建Web应用程序。

配置指南

始于:2006年2月

当前版本:4.0.3

技术要求:

  • PHP> = 7.2
  • 支持MySQL,PostgreSQL,SQLite3数据库

CodeIgniter的优点

CodeIgniter以速度闻名,在我们的PHP基准测试中速度位列第二位(仅供参考)。

该框架的占用空间小(下载体积仅1.2MB),技术人员可以按需添加其他的组件。

CodeIgniter非常灵活:鼓励使用MVC架构进行开发,但也可以编写非MVC应用程序的代码。

该框架包括针对CSRF和XSS攻击的防御措施,以及上下文相关的转义和内容安全策略。

CodeIgniter支持多种缓存方法,可加快应用程序速度。

如前所述,与其他框架相比,CodeIgniter具有易于学习的曲线,并且拥有很好的可扩展性。

CodeIgniter的社区包括官方论坛Slack讨论组

哪些企业/项目在用CodeIgniter?

Zend Framework / Laminas Project

zend

Zend 框架

Zend框架是一个历史悠久的PHP框架,不过现在已经过渡到Laminas Project。如果你还在用Zend框架开发项目,强烈建议迁移到Laminas Project,因为Zend不再更新。

Laminas Project包含3个部分:

  1. Laminas组件和MVC
  2. Mezzio
  3. Laminas API工具

配置指南

始于:2006年3月

当前版本:3.0.0(Zend)或1.3.0(Laminas)

技术要求:

  • PHP> = 5.6(Zend)或> = 7.3(Laminas)
  • 已安装Composer
  • 支持MariaDB,MySQL,Oracle,IBM DB2,Microsoft SQL Server,PostgreSQL,SQLite和Informix Dynamic Server数据库。

Zend / Laminas的优点

Zend框架的安装量已超过5.7亿,它也是企业最常用的PHP框架。

Zend遵循PHP-FIG标准,也就是说其代码可以轻松移植到其他框架。

与Symfony一样,技术人员可以仅使用所需的组件。

您可以使用Zend构建RESTful API。

Laminas社区包括官方论坛Slack讨论组,以提供协作和支持。

哪些企业/项目在用Zend/Laminas?

在Zend官方主页可以了解到,很多大型公司都在使用Zend框架,包括

Yii (Framework)

yii-framework

Yii Framework

这个框架名称Yii,中文的意思是“易”,也代表“Yes, It Is!”

配置指南

始于:2008年12月

当前版本:2.0.35

技术要求:

  • PHP> = 5.4.0,建议7+
  • 已安装Composer
  • 支持SQLite,MySQL,PostgreSQL,MSSQL或Oracle数据库

Yii的优点

您可以在数分钟内使用Yii并开始运行。Yii框架官方文档写得很好并且易于理解和遵循。

Yii Framework具有多种安全措施,例如Hash算法密码,加密,身份验证和授权。该文档提供了防止SQL注入,XSS和CSRF攻击的最佳实践。

GII代码生成器可以帮助技术人员快速构建框架代码,大大节省更多的时间。

Gii-code-generator-e1599232207871

Gii code generator

Yii支持四种类型的缓存以加速Web应用程序:数据缓存,片段缓存,页面缓存和HTTP缓存。

并且支持在Yii项目中运行第三方代码

Yii社区通过Slack或IRC提供讨论支持,你也可以通过论坛和社交媒体渠道支持。社区会通过徽章和进入名人堂的方式奖励活跃的成员。

哪些企业/项目在用Yii?

CakePHP

CakePHP

CakePHP

CakePHP提供了快速,简约的PHP开发解决方案。

配置指南

始于:2005年4月

当前版本:4.1.1

技术要求:

  • PHP 7.2(最低),7.4推荐
  • 首选使用mod_rewrite的HTTP服务器
  • 数据库支持MySQL 5.6 +,MariaDB 5.6 +,PostgreSQL 9.4 +,SQLite 3.8,SQL Server 2012+。

CakePHP的优点

配置极少。您不必倒腾XML或YAML文件。建立数据库后,即可开始编码了。

CakePHP内置ORM,使用起来简单快捷。

安全功能包括加密,哈希密码,表单数据保护和CSRF保护等。

CakePHP的组件和助手简化了开发并减少了技术人员必须执行任务数量。

Github整理提供了一个非常有用的CakePHP资源和插件列表

技术人员可以通过cookbook(文档),在线培训和CakeFest会议来学习CakePHP。

还可以通过论坛,Stack Overflow,IRC和Slack找到友好的CakePHP技术人员。也可以从CakePHP创始人Larry Masters运行的Cake DC中获得专业支持。

哪些企业/项目在用CakePHP?

Slim

Slim框架

Slim框架

Slim是由Josh Lockhart创建的精简,敏捷的微型PHP框架,该框架着重于接收HTTP请求,调用回调并返回HTTP响应。

配置指南

始于:2010年9月

当前版本:4.5.0

技术要求:

  • PHP 7.2以上
  • 支持URL重写的Web服务器

Slim框架的优点

Slim的代码库是极其精简,因为没有第三方依赖性,追求极致性能。

Slim特别适合构建小型应用程序和API。如果需要从框架中获取更多支持,Slim集成了第一方和第三方组件集成。

Slim框架易于学习和理解,只需几分钟即可运行一个“ Hello World”应用程序。

在Slant网站,Slim被开发人员评为最佳PHP框架(称号这东西仅适合参考)。

最佳PHP框架

谁才是最佳PHP框架?

通过Tidelift可获得专业的Slim技术支持。

哪些企业/项目在用Slim?

Phalcon

phalcon

Phalcon

Phalcon是一个为提高速度而构建的PHP框架,使用Zephir和C语言编写的Web服务器扩展。但开发人员不需要C的知识,而是使用框架生成的PHP类和命名空间。

配置指南

始于:2012年11月

当前版本:4.0.6

技术要求:

  • PSR扩展
  • PHP 7.2 +(建议最新版本)

Phalcon的优点

Phalcon被设计为可快速运行,具有以下功能:

  • 低层级架构。
  • 一次性加载Zephir,C扩展和PHP。
  • 代码通过编译而不是解释的,速度更快。
  • 常驻内存,这意味着可以在需要时调用。
  • 与大多数其他PHP框架不同,它不使用文件读取和文件统计信息,从而提高了性能。

由于Phalcon是松散耦合的,因此开发人员可以创建自己的目录结构。Phalcon的代码不存在于项目目录中,so代码轻巧。

Phalcon的安全组件有助于哈希密码和CSRF保护。

Phalcon的模板引擎Volt非常快,并带有帮助程序类,可轻松创建视图。

您可以通过Phalcon的文档论坛Discord聊天Stack Overflow和多个社交媒体平台寻求帮助支持。

哪些企业/项目在用Phalcon?

根据Phalcon BuiltWith网站信息,以下项目使用Phalcon:

FuelPHP

FuelPHP

FuelPHP

FuelPHP是一个社区驱动的PHP框架,在其生命周期内有300多个贡献者。

配置指南

始于:2011年6月

当前版本:1.8.2

技术要求:

  • PHP 5.4以上
  • 任何网络服务器

FuelPHP的优点

FuelPHP使用MVC,但也支持HMVC(分层模型视图控制器)。这将在Controller和View之间添加另一层。HMVC设计模式的优点是:

  • 更好的代码组织
  • 高度模块化
  • 高度可扩展
  • 提倡代码重用

您可以选择项目所需的文件和文件夹结构,因为几乎没有限制。FuelPHP具有以下功能,非常重视安全性

  • 输出编码
  • CSRF保护
  • 输入,URI和XSS过滤
  • 转义用户输入传递给SQL语句

FuelPHP使用自己的命令行工具-oil,技术人员可以用它来运行任务,调试代码,及生成常用的组件。

FuelPHP ORM强大而轻巧。

可通过官方论坛以及社交媒体Facebook和Twitter上加入FuelPHP社区。

哪些企业/项目在用FuelPHP?

Fat-Free Framework

Fat-Free-Framework

Fat-Free Framework

像Slim一样,Fat-Free Framework(F3)是一个微型框架,该框架旨在在有用的功能之间的平衡性,简单易用又追求性能速度。

配置指南
始于:2009年

当前版本:3.7.2

技术要求:

  • PHP 5.4以上
  • 任何网络服务器
  • 支持MySQL,SQLite,MSSQL / Sybase,PostgreSQL和MongoDB数据库。

Fat-Free Framework的优点

代码库体积约为65Kb,速度很快。麻雀虽小,五脏俱全,F3仍然拥有您所期望的大部分功能,并且可以使用可选插件扩展它。

Fat-Free Framework极其易上手,无需使用Composer,curl或依赖项注入器即可入门。使用它可以在几分钟内创建一个Hello World应用程序。

几乎所有框架都是模块化的,因此您只需要使用构建Web应用程序所需的部分即可。默认情况下,F3不会添加不需要的代码,以使应用程序保持最小化。

F3提供的文档清晰易懂,并带有大量示例。Fat-Free Framework提供了多种模板引擎供您选择:可以使用PHP,F3自己的模板引擎或其他诸如Smarty或Twig的模板引擎。

F3开发人员一般通过SlackFat-Free Framework Google Group进行技术讨论。

哪些企业/项目在用Fat-Free Framework?

最适合初学者的PHP框架

对于初学者来说,最好的PHP框架应该是简单易学,极简至上的框架。掌握了其中一种功能后,如果需要的话,就可以升级到功能更丰富的功能之一。

Yii应该是初学者PHP框架入门的最佳选择。Yii的文档将引导您制作一个应用程序以查看国家/地区,向您介绍MVC模式以及在此过程中如何使用数据库。

使用Yii 开发的国家Web简易程序

使用Yii 开发的国家Web简易程序

如果代码存在错误,这些错误将显而易见,从而帮助技术人员调试并快速修复改进。

未定义变量的Yii错误

未定义变量的Yii错误

Slim框架易于安装。Slim有一个针对框架版本3的第一个应用教程。不幸的是,它尚未更新为Slim版本4(当前版本)。

通过Composer安装Slim 4

通过Composer安装Slim 4

对于Fat-Free Framework,可以选择通过Composer安装,也可以下载或解压zip文件。该框架是通过一个简单的“ Hello,world”程序建立的。

用户指南从路由到单元测试,逐步指导您了解所有需要了解的知识。还有一个CMS演示,帮助您可以了解所有组件如何结合在一起。

CodeIgniter的设置也很简单,也有完整的文档可参考。他们的“第一个应用程序”教程使用带有新闻报道的CRUD功能构建了一个简单的CMS。

CodeIgniter新闻存档页面

CodeIgniter新闻存档页面

小结

如果您想减少开发PHP版本的Web应用程序的时间,那么使用长期维护的PHP框架是一个明智的选择。

为了充分利用PHP框架并避免遭遇各种坑,请确保您对PHP有足够的了解,并了解框架背后的基本概念:MVC架构,面向对象的语法,数据库和ORM以及命令行。

选择哪种PHP框架取决于所构建的应用程序的类型。前面已经罗列了当前最受欢迎的PHP框架可供您选择,虽然未能细致逐一说明,但应该能够帮助您找到适合您的完美PHP框架提供一些思路。

标签

评论交流

闪电博沟通群

扫码加入QQ交流群 695891297