一、缘由
学习背景/为什么学?
最近在godaddy上面买了台Linux主机,部署了一套博客系统,目前是使用gatsby.js编译的静态网站。但我需要一些简单的功能,比如记录PV,评论,搜索,JavaScript错误采集上传等。这些功能虽然大都有对应的免费插件,但服务器一般都在国外,因为中国的网络问题,加载速度极慢,体验几乎为零。
Linux主机支持且仅支持PHP环境。所以没办法使用我比较擅长的一些服务端语言来开发。
但我并不是一个因为不会或者能力不足就不去做事的人,我决定用8月份剩下的8天时间,从零开始自学PHP。
在学习PHP之前,我对PHP并无好感,甚至曾一度跟风鄙视这个语言。后来随着思想的变化和视野的开阔,我想通了很多事,应该始终保持开放的心态来对待技术。希望这短短的8天时间,能让我看到PHP一些不一样的地方。
学习目标及计划
计划用8天时间,平均每天花费3个小时,来学习PHP,总共大约投入24个小时,也就是一整天时间。
期望能达到什么水平?很简单,使用PHP搭建一个RESTful的web服务程序。
由于时间比较短促,我也不打算深入研究 PHP 源码、zend 引擎这些层面。
总的来说,学习PHP仅仅是为了解决我现在的需求。所以这24个小时大部分都会花在学习语法和API及框架的实际应用上面。也就是重实战而轻理论。而且我也不会深挖每个技术细节,因为要学透一门语言需要花费大量的时间。我只会关注比较重要的方面。
计划大致如下。
day0 了解PHP及环境搭建
day1 PHP初探
day2 PHP深入
day3 PHP扩展
day4 框架初探
day5 数据库
day6 RESTful服务
day7 待定
day8 待定
也许被你发现了,这明明是9天,但程序员的数学从来都是以 0 作为初始下标的。
涉及技术栈/前置知识
可能需要一些前置知识,如前端开发知识(html、css、JavaScript)、数据库知识(mysql、redis)、服务器知识(apache)和查询语言知识(graphql)。最好再熟悉一门服务端语言知识(java、golang)和一些网络(Http)知识。
这些知识都不是必须的。如果感兴趣可以去学习一下,最好看一遍官方文档,明白概念和简单应用。
如果不会也不知道它们都是做什么的,没关系。因为我们学的是PHP,而不是它们,千万别被这些名词吓倒。
其他
客观角度来看,PHP是一门步入暮年的语言。还有前途,但很有限。因为它没有核心竞争力。
从社区活跃度和实际情况调查,最活跃的是以ECMAScript为核心的大前端社区,其次是Java老牌语言,人工智能领域新崛起的Python语言,云存储领域的golang,前端工程化和API中间层的node.js。
警告
如果学习PHP对你毫无帮助,你大可不学。停止继续浏览这个网页,去做点其他对你有意义的事情吧。
二、了解PHP
php简史
PHP是一门运行在服务器上的脚本语言,全称 Perfonal Home Page。后更名 Hypertext Preprocessor,中文名“超文本预处理器”。
1995年,发布了第一个版本。作者是Rasmus,目的是管理个人文档。
1997年,两个以色列程序设计师:齐弗·苏拉斯基(Zeev Suraski)和安迪·古特曼斯(Andi Gutmans),重写了 PHP 的解释器,这是PHP3的前身。这两个程序员也是PHP未来20年的精神领袖。前段时间网上炒的很火的PHP联合创始人离职就是指的Zeev。但是他离职并不是放弃PHP,是因为商业问题,感兴趣你可以去PHP社区查查。
1998年,发布PHP3,用户飞涨。
2000年,发布PHP4,以Zend Engine 1.0解释器为基础。
2004年,发布PHP5,使用第二代Zend Engine 解释器。引入面向对象、PDO。
2015年12月04日,发布了PHP7,也就是目前最新的版本。使用Zend Engine3.0解释器。PHP没有6版本,就和JavaScript没有4一样。PHP7最厉害的地方是性能提高了数倍。
感兴趣可以去官网查阅更多信息。https://www.php.net/manual/zh/history.php.php
php应用场景/优缺点/同类语言对比
web开发,就是做网站的服务端。据说php是web领域使用最广泛的服务端语言。
php最大的对手应该是Java。
在某些程度上,PHP并不输于Java、C#这些主流服务端语言。比如说在开发效率和性能上,都胜过Java。
但是Java在扩展性、安全性、架构、生态等方面都胜过PHP。
导致它们的应用场景有了较为清晰的区别。
PHP更适合做一些中小型网站的敏捷开发。
Java更适合做一些大型复杂系统的开发。
但其实,随着SpringBoot这种框架的发展,PHP并没有多少优势存在了。使用PHP更多的原因,大概是历史原因或者团队技术原因。因为在现在,无论启动一个大型项目还是一个小型项目,最佳选择仍然是Java。
三、搭建开发环境
开发php至少需要3步。
1.安装php
2.安装web服务器
3.安装开发工具
下面以window10 64位操作系统为例进行安装。mac与linux操作系统大同小异。
如果你是新手,请和我一起做。
1.安装php
进入php官方下载页面:https://windows.php.net/download
1.安装对应系统版本的Visual C ++ Redistributable依赖。
安装过程全部点击下一步即可,安装完成后电脑需要重启。
2.选择VC15 x64 Non Thread Safe 的zip包下载。
3.下载后解压,将解压后的文件夹内的php.ini-development文件改名为php.ini。
4.将路径添加到系统环境变量的PATH中。
完成上面4部操作,在cmd中输入命令php -v
出现版本号证明安装成功。
2.安装web服务器
php比较主流的服务器有很多,如:nginx,apache。可以单独安装服务器,也可以使用服务器组件。
服务器组件是个什么概念呢?简单来说是对一大堆开发环境的封装集成,让开发者省去了繁琐的配置。
php比较主流的服务器组件有 WampServer、 xampp
安装xammp非常简单,进入官网,选择对应的平台,安装步骤全部选择下一步即可。
安装完成后,启动程序。会看到这个界面。
xampp已经把这些service的配置默认配置好了,点击start就可以运行对应的service,我这里使用的是apache。
正常情况下,apache服务启动成功会监听80端口(http)和443端口(https),从浏览器输入http://localhost即可看到对应的默认页面。
但也可能会出现一些异常。
比如我在启动的过程中,因为80端口和443端口被其他软件所占用导致启动失败。可以通过点击config来修改httpd.conf和httpd-ssl.conf文件中的Listen即可。
如果出现一些其他问题,请自行解决。
apache服务器的默认根目录是在xampp安装路径中的htdocs目录下。如果你想修改为其他目录,可以在config中修改DocumentRoot和Directory。
3.安装开发工具
这一步不是很重要,但我还是讲一下吧。
专业的开发工具有PhpStorm、Eclipse for PHP。
不是很专业的开发工具可以选择vscode,甚至sublime也可以。
上面提到的这几种开发工具,除了PhpStorm以外全部都是免费的,可以按照你的习惯选择,比如Java程序员使用Eclipse,前端程序员使用vscode。
但我个人不建议你去使用破解的开发工具,这关乎到一个程序员的价值观问题。
但如果你和我一样,都是刚接触PHP的话,建议你使用比较专业的工具。由于我是JetBrains全家桶用户,所以选择的是PhpStorm。
如果你不是付费用户,也没关系。JetBrains的软件都有一个30天试用期。
打开JetBrains的PhpStorm官网,点击Download now,下载。
安装步骤全部选择下一步即可。PhpStorm会自动找到在Path中的PHP路径,所以不需要手动指定。
至此,最小开发环境已搭建完成。
四、初体验
我们可以创建一个项目体验一下。
选择new project,会出现一个弹窗,默认选择的项目类型是PHP Empty Project。
项目名默认是untitled,修改成一个正常的项目名。
点击create,项目创建完成。
新项目的文件夹是空白的,new -> php file,起名index。
apache服务器会默认寻找文件夹下名为index.php的文件。如果不存在会找index.html文件。如果都不存在,就会返回403。
这个配置在apache的httpd.conf中可以修改,在httpd.conf中你能找到这么一段配置。
<IfModule dir_module>
DirectoryIndex index.php index.pl index.cgi index.asp index.shtml index.html index.htm \
default.php default.pl default.cgi default.asp default.shtml default.html default.htm \
home.php home.pl home.cgi home.asp home.shtml home.html home.htm
</IfModule>
DirectoryIndex后面自左向右的顺序就是apache寻找文件入口的顺序。
创建一个Hello,world程序
在index.php中写点内容。这里只是初体验,不用在乎它们在做什么,直接copy过去也行。
<?php
echo 'hello, php';
在浏览器中打开http://localhost/day0/,看到页面显示一个hello,php字样就代表成功了。
异常
这一步最可能出现的情况就是403或者404。
403的原因很可能是你的项目不在apache服务器的DocumentRoot下面,导致权限不足。解决的办法就是把项目放到DocumentRoot指定的文件夹下。
404的原因是项目是在DocumentRoot下面,但apache找不到这个路径,可能是你输错了。或者index.php不存在。
五、总结
简单介绍PHP,了解PHP背景和前景。
搭建开发环境,并完成hello,php程序,为后面正式学习做好准备。