时间:2022-11-03 07:27:02 | 浏览:13
一般我们会选择一个框架来完成我们要做的开发任务,而不是从0开始,避免重复造轮子。框架抽象了许多常用的底层逻辑,封装了许多通用又简便的方法,让我们快速高效地完成任务。
其实我们并不是必须要使用框架,有时候使用原生PHP会更好,但如果你需要一个框架,那么从设计规模上有这样几个类型:
微型框架
全栈框架
组件框架
工具框架
从运行方式上,又可以分为这样几个框架:
面向Web的PHP-FPM框架
面向Web的PHP-CLI框架
面向其他场景的PHP-CLI框架
你可能会纳闷,怎么没有“面向其他场景的PHP-FPM框架呢?”,哈哈,PHP-FPM就是专门用来处理Web的一个PHP解决方案,他本来就是面向Web的,也只能面向Web。这也就是有一部分人宣扬的“PHP只能做Web”的论调,其实是“PHP-FPM只能做Web”,PHP本身还是非常灵活和强大的。
什么是微型框架呢?一般微型框架只会处理系统的入口部分。比如如今我们在Web开发中经常接触到的一个概念“路由”,这样的微型框架会把HTTP请求转发到一个闭包、控制器或方法中,尽可能的加快开发速度,如果有一天我们的URL要发生变化了,只要调整路由即可,不需要调整主要业务的代码位置。再比如一个面向命令行的框架,处理好了常见的命令操作和参数,让我们只要把核心逻辑写好就可以了。
什么是全栈框架呢?这是相对于微型框架而言的,许多框架会在微星框架的基础上加入许多功能,以试图解决各个方面的问题,比如状态存储、数据库、缓存、验证等等,这时我们就称它为全栈框架。一个标志性的特点是,这些框架通常会内置一个ORM。当然也不是所有的全栈框架都会内置ORM,可能会引用第三方的库。但是他们都有一个共同的目标,就是让自身的规范标准尽可能满足所有场景。
什么是组件框架呢?组件框架是有多个独立的库结合起来的,但这类框架仍然会提供一个代码的组织规范(代码目录的存放标准等)。一般这些框架的组件,还可以和其他框架一起使用。
什么是工具框架呢? 这是小编自己总结的一个概念,这类框架是为了解决某一个场景的、完整度很高、但并不能直接使用的框架,只是完成了这一场景中需要的更多的工具。比如一个通用后台管理框架、内容管理框架、爬虫框架等,小编也会在后面介绍一些这样的项目。这类框架通常只能用来开发某一个专门的场景。
至于运行方式的这几个分类,其实很好理解,一般现代的用来在PHP-FPM中运行的框架,也有办法从PHP-CLI中运行,比如ThinkPHP提供了基于Swoole和Workerman的运行方式。也有一些专门在PHP-CLI中运行的面向Web的框架,这些框架既有微型的,也有全栈的,后面我们会介绍的。
除了Web还能有什么场景呢?其实PHP-CLI能够处理的场景很多,比如长链接(物联网、聊天),多进程(爬虫、采集、处理任务)、系统操作(数据迁移、系统监控)等等,后面会介绍到一两个PHP-CLI的框架。
ThinkPHP,这是国内的很流行的一个开发框架,在国内的生态非常强大,许多后台管理框架都是给予它做的。
ThinkPHP算是一个全栈框架,但这并不代表它非常笨重,ThinkPHP是简洁实用的、注重性能的轻量级框架。小编一直很钟爱ThinkPHP,但是他也面临所有国产开源项目的问题,贡献者太少,“伸手党”太多。或许等国内的商业和技术环境更好的时候,或者准备面向英文生态的时候,ThinkPHP的开源运作会提升一个层次。
ThinkPHP,既可以在PHP-FPM中运行,也内置了基于PHP-CLI的运行方式,通过使用Swoole或Workerman的方式。
Laravel,这是目前最热门最流行的框架,似乎除了不好拼写以外,没什么大的问题。
从开源运作上讲,处于非常高的层次(相对国内的开源项目来说),稳定的更新周期和技术支持,强大的社区生态,先进的编程思想,都是选择它的理由。Laravel是一个全栈框架,但同时也是一个重量级的框架,很多人诟病它的性能,但其实小编认为这并不是什么大的问题,PHP的运行有PHP的优化方案,重量级框架的问题在于大量的文件加载,通过PHP缓存或者其他的运行方式(从PHP-CLI加载运行),性能问题并不是接受不了的。
Laravel,既可以在PHP-FPM中运行,也有在PHP-CLI的解决方案,实际上运行Laravel的方式太多了,很多PHP-CLI的框架都会提供运行Laravel的方案和例子。
Yii,这是国内生态中经典的强大的框架。
Yii是一个全栈框架,实际上他算是“真·全栈框架”,他在处理Web和CLI中都有丰富的工具。
上面介绍的是几个国内比较热门的全栈框架,实际上全栈框架还有很多,这里不再一一列举,以后有的是机会。
Lumen,是基于Laravel的一个性能极快的微型框架。
相对Laravel而言,他更精简,但同时可以通过扩展的方式,获得Laravel的所有功能。
它是一个运行在PHP-FPM环境中的微型框架,但作为一个现代框架,也有很多PHP-CLI的运行方式。
webman,一个基于Workerman的微型框架。
webman仅提供了最核心的功能,比如路由、Session、中间件等,如果你需要更多的工具,通过组件加载即可。他是基于Workerman开发的,这意味着他只能运行在PHP-CLI环境中。但这并不是什么缺点,实际上,它Workerman的所有功能,比如自定义进程、进程守护、长链接服务器等。后面会介绍到Workerman。如果你希望找一个精悍简单的框架,webman非常合适。
EasySwoole,一个基于Swoole的全栈框架。
EasySwoole是基于Swoole开发的一个面向Web的框架,但是就像上面提到的webman一样,它基于swoole,意味着所有那些swoole的特性它都有。并且提供了大量的工具组件,这些工具组件中有很多提供了协程支持。它不仅提供了大量的工具,还提供了丰富的文档,或许你会爱上他。
imi,一个全栈框架,同时兼容多个运行环境(PHP-FPM、Swoole、Workerman、RoadRunner)。
imi是一个基于Swoole的框架,但新的版本并不完全依赖Swoole,就像上面讲的一样,同时兼容多个运行环境。作为一个全栈框架,他也提供了大量的工具组件,其中包括许多协程的工具。同时具备了Swoole的那些能力。目前框架也是十分活跃。
上面介绍了几个PHP-CLI的框架,这样的框架还有很多,以后有机会还会介绍。在介绍这几个项目时,你会时不时的看到Workerman、Swoole等字眼,是的下面就简单(真的很简单)介绍一下这两个框架。
Workerman,一个开源的高性能PHP容器。
它是一个PHP-CLI的框架,是一个PHP的容器,简单地说,他可以替代PHP-FPM运行PHP代码。Workerman在最近的性能测评中非常优秀,文档和生态也非常好。不论是不是有兴趣,都应该学习接触一下。这里不做太多介绍了,它的文档非常的友好,自己去体验快乐吧。
Swoole,一个PHP协程框架。
它是一个PHP-CLI的框架,是一个PHP的容器,简单地说,他可以替代PHP-FPM运行PHP代码。Swoole使用C扩展开发的,并且在国内也有很大的影响力。Swoole本身相对来说“比较底层”,衍生了一大批的框架。这里也不做太多介绍了,自己去探索吧。
ReactPHP,一个PHP事件驱动的底层库。
它是一个PHP-CLI的框架,是一个PHP的容器,简单地说,他可以替代PHP-FPM运行PHP代码。这个库在国外是非常流行的,之前小编介绍过一个纯PHP开发的Redis服务器,就是用它开发的。他在国内不太普及,但是也是一个很强大的项目,比如国外有一个PHP-PM,就是用它开发的,用来运行laravel等框架,来提高运行速度。
Minicli,一个微型的PHP-CLI框架。
Minicli是一个PHP的命令行的极简的框架,提供了一个简单地命令行操作,并且提供了规范的代码加载,没有更多内置功能。
CLIFramework,一个PHP-CLI的全栈框架。
与上面介绍的Minicli不同,它提供的是一套大而全的命令行应用框架:
能够实现各种类型的参数格式(长选项、短选项、必填、可选、默认值)
分层命令
命令参数自动提示
等等。如果你需要一个健全的命令行框架,那么可以选择它。
其实小编说的工具类框架,就是解决特定场景的项目,比如后台管理框架、内容管理框架,这里就不一一列举了,遍地都是,回头或许会做个专题来介绍整理一下。
但是这里要介绍一个有趣的工具类框架,爬虫框架。
Beanbun,是一个简单地可扩展的爬虫框架,支持分布式、守护进程,使用Guzzle来做HTTP客户端。
他是基于Workerman的,专门用来做爬虫的项目。它有以下特点:
支持守护进程与普通两种模式(守护进程模式只支持 Linux 服务器)
默认使用 Guzzle 进行爬取
支持分布式
支持内存、Redis 等多种队列方式
支持自定义URI过滤
支持广度优先和深度优先两种爬取方式
遵循 PSR-4 标准
爬取网页分为多步,每步均支持自定义动作(如添加代理、修改 user-agent 等)
灵活的扩展机制,可方便地为框架制作插件:自定义队列、自定义爬取方式...
Beanbun相对来说比较精简,但是也提供了很多组件解决方案,这些你都可以在它的文档中找到。
以上就是本文对框架的简单介绍,除了本文提到的这些外,还有许许多多的优秀的框架,这里没提到并不是说他们不好,而是小编还没有这样的能力去了解清楚。以后有机会再介绍。
作者 | Beau Beauchamp 译者 | 弯月出品 | CSDN(ID:CSDNnews)在流行文化的冲击下,也许很多人都不赞同本文表达的观点,但我毅然决定再一次逆流而上。我认为,虽然 PHP 百般受轻视,但这门编程语言的流行度比以
晓查 乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI当下,如果你打开搜索引擎,搜索关键词“PHP过时”,能找到714万个相关结果。这些结果之中,不乏有2016年、2018年的结果,说PHP已经过时了。现已2019年,这个曾经自称
PHP 是最流行的 Web 服务端编程语言,并且在 2019 年仍然很火。因此,我们将在这里盘点 2019 年七个最好的 PHP 框架。这里讨论的 PHP 框架主要用于工程实践,通常用于构建复杂、安全和可扩展的 Web 应用程序。在讨论最好
PHP 是服务器端脚本语言。您应当具备的基础知识在继续学习之前,您需要对以下知识有基本的了解:HTMLCSS如果您希望首先学习这些项目,请在我们的 首页 访问这些教程。PHP 是什么?PHP(全称:PHP:Hypertext Preproc
出品|开源中国文|御坂弟弟PHP 8.1.0 现已发布,该版本带来了许多改进和新功能。枚举使用枚举而不是一组常量并立即进行验证。只读属性只读属性不能在初始化后更改,比如,在为它们分配值后。它们可以用于对值对象和数据传输对象建模。First-
TIOBE 公布了 2021 年 11 月的编程语言排行榜。自 20 多年前 TIOBE 指数开始发布以来,PHP 一直常驻在榜单前十;然而最近,该语言已经开始在前十的边缘苦苦挣扎。TIOBE CEO Paul Jansen 称,“PHP
我已有将近二十年的编程经验,并使用过各种编程语言进行开发。在我以前做过的很多工作和现在正在做的这份工作中,我非常高兴能够将 PHP 作为核心编程语言。从第一次使用 PHP 工作开始,我就听到了关于 PHP 的各种抱怨,但与此同时我也看到了
PHP现在名声很糟糕,因为它曾经是“可怕”的。本文试着回答一些常见的关于 PHP 的断言,目的是向非技术人员解释,PHP 并不像许多人所说的那么糟糕。它是不是鼓励糟糕的实践?不再是了。过去,许多开发者被书本教授非常糟糕的实践,因此 PHP
犹记得,据 2001 年 7 月的 PHP 官方文档描述,“PHP 是有史以来最好的语言,没有之一。它快速,非常强大,而且免费。"不过,随着时间的迭代,不少开发者发现所谓世界上最好的语言 PHP,虽然能极大地提升性能,但是其功能不够完善最终
最近,我突然发现自己好像又在逆潮流而动。可能我的想法与很多朋友不同,我认为 PHP 这个编程语言界的“混蛋”比以往任何时候都更受欢迎。或许你会质疑——PHP 不是已经完蛋了吗?市面上已经出现了很多“更好”的编程语言,不是吗?答案显然是否定的