介绍 PHP:初学者指南
以下文章摘自 PHP 和 MySQL:从新手到忍者,第 7 版,这是学习构建专业 Web 应用程序所需的所有工具、原则和技术的实践指南。 在本系列的第二篇教程中,您将学习 PHP 的基础知识,包括语句、变量、运算符、注释和控制结构。
- 使用 Docker 设置 PHP 开发环境 PHP 初学者指南 MySQL 简介:初学者指南 在 Web 上显示来自 MySQL 的数据:简介
现在您已经启动并运行了服务器,是时候编写您的第一个 PHP 脚本了。 PHP 是一种服务器端语言。 这个概念可能有点难以理解,尤其是如果您只使用 HTML、CSS 和 JavaScript 等客户端语言设计过网站。
服务器端语言类似于 JavaScript,因为它允许您将动态生成的内容嵌入到网页的 HTML 代码中,与 HTML 本身相比,您可以更好地控制浏览器窗口中显示的内容。 JavaScript 和 PHP 之间的主要区别在于代码运行的阶段。
从网络服务器下载网页(嵌入式程序等)后,网络浏览器会读取和执行客户端语言(如 JavaScript)。 相比之下,服务器端语言(如 PHP)在将网页发送到浏览器之前由 Web 服务器运行。 客户端语言让您可以控制页面在浏览器显示后的行为方式,而服务器端语言让您可以在将自定义页面发送到浏览器之前即时生成自定义页面。
一旦 Web 服务器执行了网页中嵌入的 PHP 代码,结果就会取代页面中的 PHP 代码。 浏览器在收到页面时看到的只是标准的 HTML 代码。 这就是 PHP 被称为“服务器端语言”的原因:它的工作是在服务器上完成的。
注意:在网络的早期——以及本书第一版出版的时候! — JavaScript 是一种主要用于浏览器的客户端脚本语言。 然后出现了像 Ajax 这样的技术,它允许 JavaScript 与服务器通信。 最近,在浏览器和服务器上都使用 JavaScript 来创建数据库驱动的应用程序。 虽然 JavaScript 的这些新用途提供了令人兴奋的可能性,但 PHP 仍然有很大的用武之地——正如本书所要展示的那样!
PHP 代码是用 PHP 标签编写的。 与大多数 HTML 标签一样,PHP 有开始标签和结束标签: <?php
和 ?>
分别。 这些 PHP 标记内的任何内容都被视为 PHP 代码并在服务器上运行。
PHP代码必须放在一个文件中 .php
扩大。 当有人连接到服务器并要求它加载一个文件时 .php
扩展,然后服务器将其作为 PHP 脚本运行。 如果你把 PHP 标签放在一个文件中 .html
或除 .php
,Web 服务器不会运行任何 PHP 代码,PHP 代码将直接发送到浏览器——浏览器不理解 PHP 代码!
让我们看一下 PHP 脚本。
示例:PHP-RandomNumber
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Random Number</title>
</head>
<body>
<p>Generating a random number between 1 and 10:
<?php
echo rand(1, 10);
?>
</p>
</body>
</html>
要运行此代码,请将其另存为 random.php
在里面 public
目录并导航到 https://v.je/random.php
.
其中大部分是纯 HTML。 只有之间的线 <?php
和 ?>
是PHP代码。 <?php
标记嵌入式 PHP 脚本的开始,并且 ?>
标志着它的结束。 Web 服务器被要求解释这两个分隔符之间的所有内容,并将其转换为常规 HTML 代码,然后再将网页发送到请求浏览器。 如果您在浏览器中右键单击并选择查看源代码(标签可能因您使用的浏览器而异),您可以看到浏览器显示如下内容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Random Number</title>
</head>
<body>
<p>Generating a random number between 1 and 10:
5
</p>
</body>
</html>
服务器上没有包含此确切代码的 HTML 文件。 此 HTML 在发送到浏览器之前在服务器上动态生成。
尝试运行脚本几次并注意数字如何变化。 已经使用PHP代码生成了一个随机数,但是在浏览器中查看源代码时,PHP代码的所有迹象都消失了。 取而代之的是脚本的输出,它看起来就像标准的 HTML。 这个例子展示了服务器端脚本的几个优点:
- 安全。 在上面的示例中,我们将网络服务器生成的随机数放入网页中。 如果我们使用 JavaScript 插入数字,该数字将在浏览器中生成,并且有人可能会修改代码以插入特定数字。 没有浏览器兼容性问题。 PHP 脚本由 Web 服务器单独解释,因此无需担心访问者的浏览器是否支持您使用的语言功能。 访问服务器端资源。 服务器上的代码可以做任何事情; 它不限于浏览器的功能。 生成的 HTML 可以从数据库或 Excel 文件生成,也可以是计算的结果,例如用户购物车的总数。 减少客户端的负载。 JavaScript 可以显着延迟网页的显示(尤其是在移动设备上!),因为浏览器必须下载并运行脚本才能显示网页。 使用服务器端代码,这个负担被传递给 Web 服务器,您可以根据应用程序的需要(并且您的钱包可以负担得起)使它变得更强大。 选择。 当编写在浏览器中运行的代码时,浏览器必须了解如何运行提供给它的代码。 所有现代浏览器都能理解 HTML、CSS 和 JavaScript。 要编写一些在浏览器中运行的代码,您必须使用其中一种语言。 通过在生成 HTML 的服务器上运行代码,您可以选择多种语言——PHP 就是其中之一。
基本语法和语句
任何了解 JavaScript、C、C++、C#、Objective-C、Java、Perl 或任何其他 C 派生语言的人都会非常熟悉 PHP 语法。 但是,如果您不熟悉这些语言,或者您一般不熟悉编程,则无需担心。
PHP 脚本由一系列命令或语句组成。 每条语句都是一条指令,Web 服务器在执行下一条指令之前必须遵循该指令。 PHP 语句与上述语言中的语句一样,始终以分号 (;
).
这是一个典型的 PHP 语句:
echo 'This is a <strong>test</strong>!';
这是一 echo
语句,用于生成要发送到浏览器的内容(通常是 HTML 代码)。 一个 echo
statement 简单地获取它给定的文本并将其插入到页面的 HTML 代码中 PHP 脚本所在的位置。
在这种情况下,我们提供了要输出的文本字符串: This is a <strong>test</strong>!
. 请注意,文本字符串包含 HTML 标记 (<strong>
和 </strong>
),这是完全可以接受的。
所以,如果我们把这条语句放到一个完整的网页中,这就是结果代码。
示例:PHP-Echo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Test page</title>
</head>
<body>
<p><?php echo 'This is a <strong>test</strong>!'; ?></p>
</body>
</html>
如果您将此文件放在您的 Web 服务器上,然后使用 Web 浏览器请求它,您的浏览器将收到此 HTML 代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Test page</title>
</head>
<body>
<p>This is a <strong>test</strong>!</p>
</body>
</html>
这 random.php
我们之前看过的示例包含一个稍微复杂的 echo
陈述:
echo rand(1, 10);
您会注意到,在第一个示例中,PHP 得到了一些要直接打印的文本,而在第二个示例中,PHP 得到了要遵循的指令。 PHP 尝试读取任何存在于引号之外的内容作为它必须遵循的指令。 引号内的任何内容都被视为文本——或者,用技术术语来说,被视为字符串。 PHP 不会将字符串作为要遵循的命令进行处理。 它们在应用程序中被视为数据。 您可以对它们做一些事情,例如将它们发送到浏览器,但 PHP 不会将一个字符串与另一个字符串区别对待。
所以下面的代码会传递字符串 This is a <strong>test</strong>!
直接到 echo
命令:
echo 'This is a <strong>test</strong>!';
字符串使用开始引号和结束引号表示。 PHP 将首先看到 '
作为字符串的开头并找到下一个 '
并将其用作字符串的结尾。
引号之外的任何内容都被视为要运行的一系列命令。 以下是无效代码:
echo This is a <strong>test</strong>!;
因为引号已被删除,PHP 将首先尝试运行命令 This
,然后是命令 is
然后是命令 a
, 等等。 由于这些都不是 PHP 中的有效命令,因此上面的代码会产生一条错误消息。 如果您想将某些内容视为文本,请记住在其周围加上引号!
相反,下面的代码将运行一个有效的命令——内置的“函数” rand
— 生成一个随机数,然后将结果传递给 echo 命令:
echo rand(1, 10);
函数是执行特定任务的特殊类型的命令。 在幕后,PHP 会做一些处理然后生成结果。 在这种情况下, rand
函数会产生一个随机数,但不同的函数执行不同的任务。
您可以快速识别某物是否为函数,因为它后面有括号。 PHP 具有许多内置函数,可让您执行各种操作,例如发送电子邮件和处理存储在各种类型数据库中的信息。
PHP 不会尝试运行字符串中的任何内容。 以下代码不会处理 rand
功能:
echo 'rand(1, 10)';
PHP 会看到 'rand(1, 10)'
作为一个字符串,并将发送文本 rand(1, 10)
到浏览器,这可能不是你想要做的。 了解字符串和代码之间的区别很重要。 PHP 会将引号外的任何文本视为它应该遵循的一系列命令。 引号内的任何内容都是字符串,是 PHP 将使用的数据。
PHP 不会尝试理解字符串。 它们可以包含任何顺序的任何字符。 但是代码(任何不在引号内的东西)——本质上是一系列指令——必须遵循严格的结构才能让计算机理解它。
注意:使用带有语法高亮显示的代码编辑器可以轻松快速地查看某个内容是字符串还是代码。 字符串与需要处理的代码的颜色不同。
下图显示了 Visual Studio Code 编辑器中的简单代码突出显示。
PHP 支持单引号 ('
) 和双引号 ("
) 来封装字符串。 对于大多数用途,它们是可以互换的。 PHP 开发人员倾向于使用单引号,因为我们经常处理 HTML 代码,其中往往包含大量双引号。 例如:
echo '<a href="http://www.sitepoint.com">Click here</a>';
如果这里的每一端都使用双引号,我们需要告诉 PHP 后面的引号 href=
通过放置一个不是字符串的结尾 在它之前(称为转义字符)并对我们实际想要作为 HTML 的一部分发送到浏览器的任何双引号执行相同的操作:
echo "<a href="http://www.sitepoint.com">Click here</a>";
为此,PHP 开发人员使用单引号,尽管单引号和双引号之间存在一些差异。 不过,就我们这里的目的而言,它们实际上是可以互换的。
可以将函数视为程序中的微型程序。 您可以指示 PHP 通过使用其名称(例如 rand
在我们之前的示例中)后跟括号。 指令 rand(1, 10)
告诉 PHP 使用名称运行函数 rand
. 运行函数通常也称为调用函数。
PHP 中的大多数函数在调用时都会返回一个值。 返回值后,PHP 的行为就好像您实际上只是在代码中键入了该返回值一样。 在里面 echo rand(1, 10);
例如,我们的 echo
语句包含对 rand
函数,它返回一个随机数作为文本字符串。 这 echo
语句然后输出函数调用返回的值。
PHP 中的每个函数都可以有一个或多个参数,这些参数允许您使函数的行为方式略有不同。 这 rand
函数有两个参数:最小和最大随机数。 通过更改传递给…的值