俗话说“工欲善其事,必先利其器”。在开发PHP项目之前,首先需要在系统中搭建项目的开发环境。PHP项目运行过程中涉及3个重要的组件——PHP、Apache和MySQL。PHP运行环境的安装方式有自定义安装和集成安装两种,其中自定义安装需逐个安装并配置上述3个组件;而集成安装非常简单,只需下载PHP集成开发环境并安装即可。后面会对常见的PHP集成开发环境进行简要的介绍。
PHP是Hypertext Preprocessor(超文本预处理器)的缩写,它是一种通用开源脚本语言,主要用于开发动态网站及服务器应用程序,它是由Rasmus Lerdor在1949年创建。PHP经过多次的重新编写与改进,发展非常迅猛,目前最新的版本为PHP 7,它与Linux、Apache和MySQL共同构成了强大的Web应用程序平台。在服务器端Web程序开发语言方面,PHP是目前最受欢迎的语言之一,国内有许多大型的知名网站都选择PHP作为主要的开发语言。与其他语言相比,它具有以下几个方面的优势。
Apache HTTP Server(简称Apache)是Apache软件基金会的一款开放源代码的网页服务器,它可在大部分的系统上运行,由于其具有良好的跨平台性和安全性而被广泛使用,是目前最流行的Web服务器端软件之一。与一般的Web服务器相比,Apache具有如下特点。
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品,MySQL是最流行的关系型数据库管理系统之一。
PHP代码编辑工具非常多,常用的有PhpStorm、SublimeText、Notepad++、Zend Studio、Dreamweaver、vim等。
PhpStorm是一个轻量级且便捷的PHP集成开发环境,其旨在提高开发效率,可深刻理解用户的编码。它提供智能代码补全,快速导航以及即时错误检查等功能,使用PhpStorm开发PHP项目可以说是“神器”,但它的不足之处是占用系统的内存较大。
SublimeText是一款流行的跨平台的代码编辑器。它具有占用系统内存小、用户界面简约美观、功能齐全等优点,它的主要功能包括拼写检查、书签、完整的Python API、Goto功能、即时项目切换、多选择、多窗口等。
Notepad++是在微软Windows环境下的一款免费的代码编辑器,它不仅轻巧、占用系统资源少,而且执行效率高,它内置支持多达27种语法高亮度显示,支持自定义语言等,可以完美地取代微软Windows下的记事本。
Zend Studio是一个屡获大奖的专业PHP集成开发环境,具备功能强大的专业编辑工具和调试工具,支持PHP语法加亮显示、语法自动填充、书签、语法自动缩排、代码复制等功能,还内置了强大的PHP代码调试工具,支持本地和远程两种调试模式,支持多种高级调试功能。
总之,PHP代码编辑工具很多,每个工具各有优劣,读者可以根据个人喜好选择编辑工具,适合自己的才是最好的。
目前,主流的PHP集成开发环境安装软件主要有phpStudy、WampServer、XAMPP等。
在众多的PHP集成开发环境包中,使用phpStudy集成开发环境包的用户人数最多,因为phpStudy集成了最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader,且一次性安装,无须配置即可使用,非常方便、好用。该程序绿色小巧、简易迷你,还有专门的控制面板,它支持Apache、IIS、Nginx和LightTPD,全面支持Windows 2000/XP/2003/Windows7/Windows 8/Windows 2008/Windows 10等操作系统。
Wamp就是Windows、Apache、MySQL、PHP集成安装环境的缩写,即在Windows下的Apache、PHP和MySQL的服务器软件,因该集成开发环境易用实用,所以使用非常广泛。
XAMPP是整合型的Apache套件,包括Apache、MySQL、PHP和PERL,该集成开发环境包直接解压缩就可以使用,没有复杂的安装过程,使用非常方便。
PHP的所有应用程序都是通过Web服务器(如Apache等)和PHP引擎程序解释执行完成的,它的工作原理如图1-1所示。
图1-1 PHP程序运行原理
第一步,当用户在浏览器地址中输入要访问的PHP页面文件后,浏览器向Web服务器发送请求信息。
第二步,Web服务器接受这个请求,从存储器中取出用户要访问的PHP页面文件,并将其发送给PHP引擎程序。
第三步,PHP引擎程序将会对Web服务器传送过来的文件从头到尾进行扫描,根据命令处理MySQL数据库服务器上的数据,并动态地生成相应的HTML页面。
第四步,PHP引擎将生成的HTML页面返回给Web服务器,Web服务器再将HTML页面返回给客户端浏览器。