首页 > 后端开发 > 正文

php架构和框架是什么区别 软件设计中的框架和架构的区别

2023-10-06 22:43:28 | 我爱编程网

今天,我爱编程网小编为关注后端开发的同学们准备了php架构和框架是什么区别 软件设计中的框架和架构的区别,下面一起来看一下吧。

php架构和框架是什么区别 软件设计中的框架和架构的区别

php的开发框架是什么

php的开发框架是什么?下面为您详细介绍。
框架是通过提供一个开发Web程序的基本架构,PHP开发框架就是一种搭建好了的PHP的基本架构。它能够促进快速软件开发(RAD),为我们节约时间,有助于创建更稳定的程序,并减少开发者的重复编写代码的劳动,让我们可以花更多的时间去创造真正的Web程序。


拓展:四种主流框架
ThinkPHP
ThinkPHP(FCS)是一个轻量级的中型框架,它是从Java的Struts结构移植过来的中文PHP开发框架。它使用面向对象的开发结构和MVC模式,并且模拟实现了Struts的标签库,各方面都比较人性化,熟悉J2EE的开发人员相对比较容易上手,适合php框架初学者。 ThinkPHP有着丰富的文档和示例,框架的兼容性较强,但是其功能有限,因此更适合用于中小项目的开发。
Yii
Yii 是一个基于组件的高性能php框架,用于开发大型Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了 今日Web 2.0应用开发所需要的几乎一切功能。事实上,Yii是最有效率的PHP框架之一。
Codelgniter
Codelgniter 以它的简单易用,性能和速度而闻名。它提供了简单的解决方案,还有扩展的知识库,通过视频教程,用户指南和wiki来提供支持。
Laravel
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。

php架构和框架是什么区别 软件设计中的框架和架构的区别

软件设计中的框架和架构的区别

框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。

构架和架构也就是通常所说的软件体系结构(software).体系结构一般包括三个部分:构件,用于描述计算;连接器,用于描述构件的连接部分;配置,将构件和连接器组成一个有机整体.对体系结构比较严谨比较认可的定义可参见<软件工程技术概论>(科学出版社).体系结构与框架(Framework)的区别与联系如下: 我爱编程网

1.呈现形式不同.体系结构的呈现形式是一个设计规约,而框架则是程序代码.

2.目的不同.体系结构的首要目的大多是指导一个软件系统的实施与开发;而框架的首要目的是为复用.因此,一个框架可有其体系结构,用于指导该框架的开发,反之不然.

3.有种特殊的体系结构,DSSA(领域特定体系结构)其首要目的也是为了复用.

4.有个叫体系结构风格的东西,将它用程序代码实现后就成了Corba,COM之类的东西,它们俩叫体系结构框架,也叫中间件集成框架,又有人愿意叫它对象中间件

php架构和框架是什么区别 软件设计中的框架和架构的区别

PHP是什么-PHP的架构及原理概述



记得我刚开始学习PHP的时候,许多面试官会经常问我PHP是什么,那时的标准回答是PHP是一种弱类型动态脚本编程语言,开源,
免费,是超文本预处理器的缩写。
这只是很浅的解释,PHP对我来说是一个工具,是我手里的一把锤子,虽然这把锤子时常被调侃为两边都是起钉器的锤子。
多进程模型
PHP是以多进程模型设计的,这样的好处是请求之间互不干涉,一个请求失败也不会对其他进程造成影响,作为最开始仅仅用于个人网站的一个工具集这样的设计并没有什么不妥,随着PHP的应用变大,访问量增加这种方式显然是不合适的,因为启动一个进程的开销对于海量请求是不划算的,所以现在PHP基本都是运行在PHP-FPM的管理下的,这是一个PHP进程管理器,它常驻内存启动一些PHP进程待命,当请求进入时分配一个进程进行处理,PHP进程处理完毕后回收进程,但并不销毁进程,这让PHP也能应对高流量的访问请求。
当然现在也有PHP多线程的解决方案和基于协程的解决方案让PHP更高效的处理WEB请求。
弱类型
与 JAVA、C/C++ 不同,PHP是一门若类型的语言,变量在声明的那一刻是不需要确定它的类型的,而在运行时类型也会发生显式或隐式的类型改变,这也是PHP开发应用迅速、方便的原因之一。
其他
Zend 引擎 + Ext 扩展 的模式降低了内部耦合,可以方便的为PHP本身增加功能和去除功能。
语法简单,没有太多强制规范,编程风格上既可以用过程式、也可以用面向对象的方式进行开发,当然函数式也可以。
以目前的 PHP 主流版本 PHP7 和 PHP5 来说架构是如上图所示,主要有四层体系构成,从下到上依次是 Zend 引擎、Extensions 扩展、SAPI 接口、上层应用。
Zend 引擎
Zend 引擎是 PHP4 以后加入 PHP 的,是对原有PHP解释器的重写,整体使用 C 语言进行开发,也就是说可以把PHP理解成用C写的一个编程语言软件,引擎的作用是将PHP代码翻译为一种叫opcode的中间语言,它类似于JAVA的ByteCode(字节码)。
引擎对PHP代码会执行四个步骤:
词法分析 Scanning(Lexing),将 PHP 代码转换为语言片段(Tokens)。解析 Parsing, 将 Tokens 转换成简单而有意义的表达式。编译 Compilation,将表达式编译成Opcode。执行 Execution,顺序执行Opcode,每次一条,以实现PHP代码所表达的功能。
APC、Opchche 这些扩展可以将Opcode缓存以加速PHP应用的运行速度,使用它们就可以在请求再次来临时省略前三步。
引擎也实现了基本的数据结构、内存分配及管理,提供了相应的API方法供外部调用。
Extensions 扩展
常见的内置函数、标准库都是通过extension来实现的,这些叫做PHP的核心扩展,用户也可以根据自己的要求安装PHP的扩展。
SAPI
SAPI 是 Server Application Programming Interface 的缩写,中文为服务端应用编程接口,它通过一系列钩子函数使得PHP可以和外围交换数据,SAPI 就是 PHP 和外部环境的代理器,它把外部环境抽象后,为内部的PHP提供一套固定的,统一的接口,使得 PHP 自身实现能够不受错综复杂的外部环境影响,保持一定的独立性。
通过 SAPI 的解耦,PHP 可以不再考虑如何针对不同应用进行兼容,而应用本身也可以针对自己的特点实现不同的处理方式。
上层应用
程序员编写的PHP程序,无论是 Web 应用还是 Cli 方式运行的应用都是上层应用,PHP 程序员主要工作就是编写它们。
总结
这些东西如果你学习过 android 开发理解起来显然更容易,因为android的架构和PHP的这种架构看起来很相似。当你理解这些后你就会理解为什么PHP的创始人会说PHP开发其实是不需要框架的,因为PHP的设计本身就是一个类似框架的东西,如果用汽车比喻的话PHP本身就是就是车的骨架,Zend的是引擎,Ext是轮子,方向盘等车的组件,SAPI 就是路。
对于这些内容,可能有的人觉得有点无用,因为很多人偏执的认为自己只是个开车的,为什么开车的要了解车子是怎么跑起来的,对于了解如何制造一辆车更是嗤之以鼻。我曾经也这样认为,直到翻译Laravel文档时,Laravel 的作者给了我一些启发,也把这些话送给看到这个文章的你们:
使用「现实世界」中的任何工具时,如果理解这个工具的运作原理,那么你会更加得心应手的使用这个工具。应用开发也是这样。当你明白你的开发工具如何运行的,你就会对它们的使用游刃有余。
这篇文档的目的是让你更好的理解 Laravel 框架如何进行工作及它的工作原理。通过对框架进行全面的了解,一切都不会那么「神奇」,也将会让你更有自信的构建你的应用。

以上就是我爱编程网小编为大家带来的php架构和框架是什么区别 软件设计中的框架和架构的区别,希望对大家有帮助,了解更多相关资讯请关注我爱编程网。
与“php架构和框架是什么区别 软件设计中的框架和架构的区别”相关推荐
Python怎么输入和输出?Python的输入和输出方法
Python怎么输入和输出?Python的输入和输出方法

Python怎么输入和输出?Python的输入和输出方法Python是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大,它也是互联网最热门的编程语言之一。不管是传统的Web开发、PC软件开发、Linux运维,还是大数据分析、机器学习、人工智能,Python都能胜任。对于准备自学或者想要提升Python的小伙伴来说,可能找到一套合适的课程学习往往能够事半功倍!为大家提供到了四套潮享教

2023-12-13 15:05:46
python xlwt excel 单元格边框,如何才能有如下的加黑边框
python xlwt excel 单元格边框,如何才能有如下的加黑边框

pythonxlwtexcel单元格边框,如何才能有如下的加黑边框borders = xlwt.Borders()borders.left = 1borders.right = 1borders.top = 1borders.bottom = 1borders.bottom_colour=0x3A    style = xlwt.XFStyle()style.borders = border

2023-12-12 18:09:59
python简称是什么
python简称是什么

python简称是什么python是一种计算机脚本语言,又有胶水语言之称。生活中,一些朋友为了方便就直接念python的简称,那么python简称是什么呢?正是由于Python的文件名后缀是.py,所以,很多人,也常常用py来指代Python。python应用范围广泛:网络应用程序Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Pyt

2023-12-11 12:26:01
Python培训机构哪个好?
Python培训机构哪个好?

Python培训机构哪家比较好?相信在IT领域发展的同学对Java很熟悉。Python编程语言排行中一直处于领先地位,这可以直接体现Python的重要。因此很多同学准备参加Python培训机构系统学习。那么,Python培训机构哪家比较好?下面我们介绍一下。随着Python普及,越来越多的人了解py,企业也会对求职者提出更高的要求,他们想招聘一些能马上开始工作的人,所以往往会招聘一些

2023-12-12 18:49:43
如何在python IDLE Shell窗口中编写程序计算圆的周长?
如何在python IDLE Shell窗口中编写程序计算圆的周长?

如何在pythonIDLEShell窗口中编写程序计算圆的周长?可以按照以下步骤在PythonIDLEShell窗口中编写计算圆周长的程序:打开PythonIDLEShell窗口。在窗口中输入以下代码:pythonCopycoderadius=float(input("请输入圆的半径:"))circumference=2*3.14159*radiuspr

2023-12-13 02:25:56
如何使用Python计算两个数字的乘积或平方?
如何使用Python计算两个数字的乘积或平方?

怎样用python编出乘法算式?print('\n'.join([''.join(['%sx%s=%-2s'%(y,x,x*y)foryinrange(1,x+1)])forxinrange(1,10)]))Python写出输入二个数,求这二个数的加、减、乘、除、取余、取整、幂的值并输?当你想要让用户输入两个数字,并计算它们的加法、减法、乘法、除法、取余、取整、幂运算的结果,可以

2023-12-12 13:00:59
我的世界如何写代码
我的世界如何写代码

我的世界如何写代码以下是按要求改动的代码:编写代码以制作我的世界(Minecraft)模组是一项既有趣又有挑战性的任务。首先,你需要选择一个编程语言来编写Minecraft模组。目前,最常用的语言是Lua,因为Minecraft的开发者也使用它来编写游戏逻辑。如果你熟悉Python,也可以尝试使用Python编写模组,但Lua更为常见。一、获取Minecraft

2023-12-13 17:05:15
Python中如何添加注释
Python中如何添加注释

Python中如何添加注释任何语言都有注释一说,Python也有注释,如何添加呢?Python添加注释很简单,在文件开头加入一个#即可。如下图所示,因为前面有个#,代码并没有被执行再入下图所示,第二行代码加入了#,所以第一行代码被执行,第三行被执行,第二行没有被执行那么,我们为什么要在代码中添加注释呢?代码中的注释又没有被运行,看起来没有任何意义啊?首先,作为使用者,是

2023-12-14 01:49:51