记得我刚入手下手进修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的架构及道理概述的细致内容,更多请关注ki4网别的相干文章!

PHP什么架构,PHP是什么-PHP的架构及道理概述_后端开发相关推荐

  1. 一文看懂Java微服务架构,WEB2.0,垂直架构,分布式架构,微服务架构

    Java微服务架构 目录: 了解开发环境&生成环境 WEB1.0 & WEB2.0 垂直架构 分布式架构 微服务架构 1.了解开发环境&生产环境 1.1 开发环境 平时在写代码 ...

  2. android组件化架构 书,Android MVVM组件化架构方案

    MVVMHabitComponent 关于Android的组件化,相信大家并不陌生,网上谈论组件化的文章,多如过江之鲫,然而一篇基于MVVM模式的组件化方案却很少.结合自身的调研和探索,在此分享一篇基 ...

  3. 系统架构师-基础到企业应用架构-表现层

    一.前言 最近也许是由于假期的原因,我发布的文章的速度变慢了,对大家说下抱歉,这个系列的确我很难写,感谢大家对我的支持和关注,的确我在发布后得到大家的支 持和认可,让我有了更多的动力,之前发布的有些内 ...

  4. 亿级商品详情页架构演进技术解密 | 高可用架构系列 二

    转载:http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=210272034&idx=1&sn=3be9d2b53c7fe ...

  5. 富士通台式电脑_英特尔X86架构霸权终将崩塌,ARM架构才是未来PC电脑市场的王者?...

    人们日常接触到的各类处理器芯片,通常是基于X86架构或者ARM架构.一般认为,X86架构用的是复杂指令集(CISC),强调高性能,更适合台式机.服务器:ARM架构用的是精简指令集(RISC),强调低功 ...

  6. 亿级商品详情页架构演进技术解密 | 高可用架构系列

    亿级商品详情页架构演进技术解密 | 高可用架构系列 --http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=210272034&i ...

  7. 系统架构师-基础到企业应用架构-企业应用架构

    为什么80%的码农都做不了架构师?>>>    一.上篇回顾 我们先来回顾下上篇讲解的内容,我们前面的几节分别讲述了,业务逻辑层.数据访问层.服务层.表现层,我们了解了这些分层的职责 ...

  8. 系统架构师-基础到企业应用架构-系统设计规范与原则[上篇]

    一.上章回顾 在上篇中我们讲解了几类UML2.0语言新推出的建模图形,总体来说通过这些图形能更详细的将某类信息表达出来.在这里我们简单回顾上篇讲解的内容. 上图中已经简单介绍了上章讲述的内容,具体内容 ...

  9. 架构漫谈:我心中的架构

    本文为<架构漫谈>系列第一篇.本文将会从:"什么是架构","架构能解决什么问题","架构和框架的区别"三个点来着重讨论,本文系个 ...

  10. 关于架构的优化和设计,架构师必须悟透的事情

    原文地址:http://mp.weixin.qq.com/s?__biz=MzA5Nzc4OTA1Mw==&mid=411196355&idx=1&sn=be0d574b4a1 ...

最新文章

  1. animation与transition区别
  2. Java网络编程笔记1
  3. C++ 虚函数和纯虚函数
  4. 远程电脑桌面控制怎么看计算机,计算机如何通过远程控制,可以查看他人电脑屏幕...
  5. Blazor University (6)组件 — 组件事件
  6. JMeter:负载测试关系数据库
  7. Leetcode--319. 灯泡开关
  8. wp7 --缓动动画
  9. Jquery和angularjs获取check框选中的值小技巧
  10. 单片机c语言入门自学,单片机C语言入门教程
  11. 教你实战Flutter Deskstop之Tinypng(熊猫图片压缩)GUI工具
  12. 波特率和比特率的定义及计算
  13. 双曲函数在积分换元中的应用
  14. 对于Android虚拟机启动失败“The emulator process for AVD Nexus_5X_API_30 was killed”的解决方案
  15. 第四章 软件总体设计 1
  16. /etc/ssh/ssh_config line 59: Unsupported option “gssapiauthentication“
  17. 霍尼236主机说明书_霍尼韦尔plus-236报警主机
  18. 安全、可靠、合规,华为云守护企业网站安全
  19. MySQL数据库——初识MySQL
  20. mysql 内存大_MySQL数据库之MySQL大内存配置方案

热门文章

  1. python __setattr__, __getattr__, __delattr__, __call__
  2. JS iframe 跨域
  3. 153. php 引用
  4. 7. 开启 mysql remote access
  5. Jquery中BlockUI的详解
  6. fread函数将二进制文件读入成矩阵形式
  7. .net core 介绍好文章
  8. 4 个拥有绝佳命令行界面的终端程序
  9. Flume案例之采集特定目录的数据到HDFS
  10. Python-运算符和其优先级