13426109659
webmaster@21cto.com

PHP与HTML、JavaScript的关系

章节 3/3 | 学习时间: 3 最小
PHP与HTML、JavaScript的关系
JavaScript简称JS,也是一种脚本语言,通常运行在客户端浏览器。开发者可通过Chrome浏览器“显示源代码”功能来查看。如图1-7所示:


图1-10 IBM(https://www.ibm.com)首页源代码

以上网页源代码中展示了多个标签式语言的组合,包括HTML、CSS和JavaScript(简称为JS)。

JavaScript代码嵌于指定的script标签之间(<script type ="text/javascript">与</script>),它可以在用户电脑硬盘中生成一种Cookie的小文本文件,可以用来记录与跟踪用户行为。



图1-11 PHP官网(https://www.php.net)首页源代码

再来看PHP官方网站的首页代码(如图1-8),同样看不到任何服务器端脚本,可以肯定的是,它是用PHP写的,但是没有任何PHP的痕迹——这就是客户端和服务器端语言的区别。

这是因为,JavaScript代码是从服务器端下载到用户计算机中,在其浏览器中解释执行,则PHP则保存和运行在服务器端,代码经过Zend引擎解析后将结果通过 Web服务器返回浏览器,不会出现服务器端源码。

PHP的优缺点

在互联网刚刚出现时,开发者只能用C或C++语言进行Web应用开发,进而发展到使用ASP、Perl、ColdFusion等,到当今的Node.JS、Python、.NET、JavaEE与PHP解决方案。

因为.NET当时暂不能很好地跨平台部署,余下的主流就只有Java EE(Java Enterprice Edition)与LAMP/LNMP(Linux+Apache/Nginx+MySQL/MongoDB+PHP/Python/Perl)这两大主流。

PHP本着务实、不尚空谈,特别是今天的PHP 8.x。接下来总结其优势如下:

Ø  语法简洁,开发效率高

PHP的函数库涵盖Web开发中绝大部分功能,如数组、日期、字符串、正则表达式等,函数封装和抽象做得比较好,有时只需要用一行代码就可以做完,这意味着花费很少量时间就可以达成目标。

PHP支持面向过程与面向对象两种风格的开发。互联网行业要求快节奏,今天有一个想法,最好明天要推出产品,避免错失市场机会,重要的是产品很快上线后能快速验证想法,然后再进行迭代优化。

Ø  容易部署

在你的的本地环境,不论是什么操作系统,比都可以顺利创建和部署PHP开发与运行环境。这是其它语言不能比拟PHP的最大优势。

Ø  输出控制灵活

可以在HTML页面内嵌入PHP,也可以输出HTML,PHP可在命令行下执行,输出结果到非浏览器的设备。

Ø  模板引擎

可以利用Smarty、PHPTAL、Savant、Twig以及Laravel Blade等模板引擎,实现代码逻辑与页面逻辑分离,从而让业务逻辑边界清晰,容易扩展维护。

Ø  广泛的操作系统支持

PHP可运行在Windows(Windows 10/Windows 11)、Linux(RedHat/CentOS/Ubuntu/Debian等)、Mac OS以及Unix(FreeBSD/OpenBSD/Solaris等)等主流操作系统。

几乎所有的公有云均支持PHP运行环境,且价格相对低廉。当使用Java、Ruby开发 Web应用时,有时会较难找到一个托管运营商,而PHP则不会存在这样的问题。

所有的基础服务商,包括云主机、虚拟主机以及独立服务器托管商,均完备的支持PHP运行环境,成本低廉,部署方便。

Ø  主流Web服务器支持

PHP支持多种Web服务器兼容,主流如Nginx、Apache、LightHttpd及IIS。PHP 本身也为开发提供了供调试用的内置Web服务器。

Ø  广泛的数据库系统支持

PHP支持市场上如MySQL、MariaDB、SQLite、PostgreSQL、Oracle、Microsoft SQL Server等主流关系数据库系统,支持ODBC标准。

Ø  支持自定义扩展

PHP除了在发行包中提供大多数通用的如数据库,图片处理、文件压缩等扩展库,还提供扩展的API(一组C函数库)允许程序员编写属于自己的扩展库。这也是PHP能够取得成功的原因之一。

Ø  支持 COM调用

PHP支持直接访问Windows的COM对象和动态封装,调用其内核API及应用层接口的事件处理。

Ø  正则表达式支持

PHP支持POSIX与PCRE(Perl兼容式)两种类型的正则表达式。

Ø  开发效率高,开源业态丰富

PHP的最初定位,就是提供的是一个快速开发适合市场的黏合语言解决方案。目前有大量的开源项目供人们参考与二次开发,能短时间内达成产品目标。

Ø  企业级开发

国内外的金融行业、能源行业、政府机构也采用了PHP等开源技术来开发应用系统,并且近年来IBM、SAP、Intel等业界巨头在为PHP以及其商业公司Zend提供资本支撑,得到了甲骨文、微软等公司支持,另外软件厂商如Adobe、Aptana等均在为PHP应用、企业化开发助力驰援。

Ø  应用开发框架生态丰富

在PHP的世界里,有YII、CodeIgniter、Symfony、ThinkPHP、Laravel以及CakePHP等MVC框架(Model View Controller Framework),帮助开发者编写干净、易维护且功能强大的应用程序。

Ø  支持多线程及协程

PHP支持多线程模型,解决资源共享和隔离的问题,它是线程安全的。而协程是线程的一种,开发者可以调度的用户线程,典型的产品有AMP、ReactPHP与Swoole等。

Ø  国际化支持

PHP原生支持Unicode-16、i18n、字符集整理(Collation)、亚洲语言翻译(str_transliterate)等国际化及其它国际化支持。

Ø  桌面级应用开发

PHP不仅能够开发Web应用,也可以开发Win32/W-Window桌面(PHP GTK、Winbinder)应用。虽然它并不一定最适合,也为开发者提供了一个选项。

Ø  解释与编译运行

编程语言有两种类型,一种是编译型,另一种为解释型。编译型语言是由开发者编写的本地代码,经过编译为机器代码后执行,而解释语言是把当前行的代码直接转换为可以执行的指令,不需要再预编译。

解释型语言的特点是,解释器执行完一行代码,接着解释下一句代码,边解释边执行。解释型语言不需要花费时间来编译所有代码,开发应用程序方便,不必运行修改完程序后再重新编译一次,因此节省了一部分编译要花费的时间。

在PHP中,可以实现“半编译”功能,可以借助OpCache、APC、eAccelerator等扩展,把上次编译的脚本(称为OpCode)保存起来,在第二次运行时直接执行“编译”后的脚本,达到性能的最大化。

Ø  支持代码加密分发

在使用Java、.NET这些虚拟机字节码的语言时,某些时候很容易被反编译,导致一些安全漏洞。

使用Zend Guard、ionCube等代码加密工具可以使PHP实现解密后再“编译”运行,不仅实现速度的提升,而且可以实现PHP源码的真正加密,达到保护作者的利益和软件版权。

PHP应用的主要领域和场合包括如下三个:

(1)服务器端脚本(Server-side Script),即常用的Web 网站开发;

(2)命令行/Shell脚本(CLI/Command line Script),Linux Shell或Win32命令行下运行的Deamon守护脚本以及服务器端管理程序,可用于邮件处理、自动化管理或系统维护等领域;

(3)客户端用户界面(Client-side GUI Application),如使用 GTK可以开发桌面应用程序。

Ø  优秀的用户社区

PHP有着足够长的时间沉淀,其用户社区遍布全球,这也意味有庞大数量的开发人员提供支持。

据最新统计数据,在全球互联网上有80%以上的网站为PHP驱动,在国内有近80%以上站点为PHP驱动(数据来源:http://www.php.net/usage.php),据Wappalyzer最近的编程语言综合统计,PHP市场份额为78.7%(如图1-9所示)。


图1-12 后端编程语言市场占用率(数据日期:2025年8月)

(图片来源:https://www.wappalyzer.com/categories/programming-languages)

PHP和相关模块几乎被安装在所有云服务提供商的服务器上。来自W3Techs的数据统计表明PHP目前是服务器端编程语言的市场领导者,占有73.7%的份额。 


图1-13全球网站后端语言使用比例,PHP占首位(数据日期:2025年8月)

(图片来源:https://w3techs.com/technologies/overview/programming_language)

从事实来看,PHP是Web开发编程语言的市场领导者。总结应用PHP的几大理由如下:

1)易于学习,适合快速上线;

2)有丰富的扩展类、工具库;

3)有活跃的用户群,广大的开发者社区;

4)功能强大,安全性高以及运行稳定;

5)市场与需求不断持续增长。

除了Web开发,App开发,还有微信&支付宝小程序,使用PHP做后端都是上好的选择。 

当然,完美的编程语言在这个星球上并不存在,PHP本身也存在一些显而易见的缺点,我们如下总结:

1)函数命名不统一

由于历史原因,PHP的内置函数命名有驼峰式命名也有下划线式,参数顺序,功能类似的函数位置并不一致。这一缺点在PHP8中已经得到进一步改善。

2)尚不适合做移动端开发

PHP属于后端语言,它并不适合做手机端应用程序开发。

1)数据结构单一

PHP提供了数组(Array)这个单一数据结构,用它实现了Map,Set,Queue,Stack,Heap等数据结构功能,用SPL(Standard PHP Libray标准库)实现这些数据结构的封装与存取。

2)编码层面

PHP入门容易,造成很多人对它的误解是简单,但其实是“入门容易精通难”。

很多历史原因,有很多非专业人士的奇思妙想,造成诸多冗长的类似“意大利面条”代码,甚至有很多复制粘贴的“垃圾代码”,导致应用程序的性能、可维护性和安全性非常不佳,缺乏软件工程和产品的严谨性,即可扩展、可维护与高性能。

现如今应用越来越更复杂和动态化,需要分布式云端部署,还可能和第三方服务集成,与私有云集成。伴随着微服务、虚拟化、云计算以及人工智能技术不断发展,更需要开发者与时俱进,在这点上PHP生态更需要进一步跟得上云原生的技术潮流。

开源的PHP

开放源代码软件,简称开源,英文全称:Open Source Software,简称OSS,即开发者把自己写好的源代码,通过互联网分享给其它用户,比如GitHub、SourceForge等代码分享平台。

开源软件遵守一种共通约定,即开源协议(也称许可证),典型如GPL、LGPL、BSD、MIT等,用户下载使用后可修改或二次分发为自己所用。

虽然这些开源协议在使用上有所区别,但主旨均倡导的是共享、互惠,发扬积极、自由,创新等精神。开源不仅是一种贡献社会的行为,也可以称做一种信仰。


PHP 的Logo与吉祥物

在数十年的发展进程中,开放源代码软件演绎出了丰富多彩的吉祥物文化。Linux、PHP、Perl、Python以及Ruby等开源软件都有自己的吉祥物,伴随着开发者社区建立起良好的用户生态。

PHP的Logo是一个蓝色的椭圆型包含着PHP三个艺术字体。它的吉祥物被演绎为一头大象,表示其性格温和又实力强壮,这只吉祥物是由一位喜爱PHP的法国软件设计师制作并无偿捐献给开发者社区。

PHP从一开始就是开源软件,这意味着所有使用者是在开放、共享与互助的框架下共同成长,人们可以随意查看、使用、修改或者重新发布其源代码,没有任何限制,甚至可以二次开发其源代码,打造属于自己的分发版。

PHP与Linux、Apache/Nginx、MySQL组合成LAMP/LNMP技术堆栈,成为稳定的Web开发解决方案之一。

用PHP开发的软件产品可谓浩如烟海,对于几乎所有类型的Web产品都可以找到开源的项目,例如内容管理系统、微博、网店、拍卖、论坛等开源软件。

国内外的90%以上开源和软件提供商使用PHP构建。以下仅列出部分流行的PHP开源产品:

开源软件的类型

国内外大型网站,如Facebook、Flickr、Wikipedia,Tumblr以及雅虎、维基百科、百度、腾讯、新浪以及今日头条等全部在或部分使用PHP做为后端技术栈。

下面,我们来举一些著名的PHP开源软件。

电子商务

ECShop、ShopNC、CRMEB、osCommerce、OpenCart、OXID eSales、Magento、PrestaShop、PHPShop

内容管理

WordPress、Joomla、Mambo、Drupal、MediaWiki、PHPCMS、Discuz!

那么,再看自由软件、开源软件与免费软件的区别:

开源软件主要由开发者社区和软件代码构成,社区由不同地区的程序员组合,接受人们的建议以提升和优化社区。开源软件又是自由软件。自由软件倡导软件这种知识产品应该免费共享的社会运动,主要基于从社会伦理学,道德的高度。

开源软件在遵守知识产权和相关协议的情况下,不限制使用者商用收费。免费软件免费不一定开放源代码,软件使用免费,服务有可能收费。

祝你学习愉快。