PHP入门

Download php eBook

备注

在此处输入图像描述

PHPPHP的递归首字母缩写:Hypertext Preprocessor)是一种广泛使用的开源编程语言。它特别适合Web开发。 PHP的独特之处在于它既适合初学者,也适合经验丰富的开发人员。它具有较低的入门门槛,因此很容易上手,同时它还提供其他编程语言提供的高级功能。

开源

这是一个开源项目。随意参与其中

语言规范

PHP有一个语言规范

支持的版本

目前,有三个受支持的版本 :5.6,7.0和7.1。

PHP的每个发布分支在其最初的稳定版本发布后的两年内完全受支持。在这两年的积极支持期后,每个分支机构将再支持一年,以解决重大安全问题。在此期间的发布是根据需要进行的:根据报告的数量,可能会有多个点发布,或者没有发布。

不受支持的版本

一旦三年的支持完成,分支即达到使用寿命,不再受支持。

可以使用生命终结分支表

问题跟踪器

https://bugs.php.net/上跟踪错误和其他问题。

邮件列表

有关PHP开发和使用的讨论在PHP邮件列表中进行

官方文件

请帮助维护或翻译官方PHP文档

您可以使用edit.php.net上的编辑器。查看我们的贡献者指南

版本

PHP 7.x.

支持直到发布日期
7.1 2019年12月1日 2016年12月1日
7 2018年12月3日 2015年12月3日

PHP 5.x.

支持直到发布日期
5.6 2018年12月31日 2014年8月28日
5.5 2016年7月21日 2013年6月20日
5.4 2015年9月3日 2012-03-01
5.3 2014年8月14日 2009-06-30
5.2 2011-01-06 2006-11-02
5.1 2006-08-24 2005-11-24
5 2005-09-05 2004-07-13

PHP 4.x.

支持直到发布日期
4.4 2008-08-07 2005-07-11
4.3 2005-03-31 2002-12-27
4.2 2002-09-06 2002-04-22
4.1 2002-03-12 二〇〇一年十二月十日
4 2001年6月23日 2000年5月22日

旧版本

支持直到发布日期
3.0 2000-10-20 1998年6月6日
2.0 1997年11月1日
1.0 1995年6月8日

来自Web服务器的HTML输出

PHP可用于向HTML文件添加内容。虽然HTML由Web浏览器直接处理,但PHP脚本由Web服务器执行,生成的HTML将发送到浏览器。

以下HTML标记包含将添加Hello World! 的PHP语句Hello World! 到输出:

<!DOCTYPE html>
<html>
    <head>
        <title>PHP!</title>
    </head>
    <body>
        <p><?php echo "Hello world!"; ?></p>
    </body>
</html>
 

当它保存为PHP脚本并由Web服务器执行时,以下HTML将发送到用户的浏览器:

<!DOCTYPE html>
<html>
    <head>
        <title>PHP!</title>
    </head>
    <body>
        <p><?php echo "Hello world!"; ?></p>
    </body>
</html>
 
PHP 5.x 5.4

echo 还有一个快捷语法,可让您立即打印一个值。在PHP 5.4.0之前,此短语法仅适用于启用了short_open_tag配置设置。

例如,请考虑以下代码:

<!DOCTYPE html>
<html>
    <head>
        <title>PHP!</title>
    </head>
    <body>
        <p><?php echo "Hello world!"; ?></p>
    </body>
</html>
 

其输出与以下输出相同:

<!DOCTYPE html>
<html>
    <head>
        <title>PHP!</title>
    </head>
    <body>
        <p><?php echo "Hello world!"; ?></p>
    </body>
</html>
 

在实际应用程序中,应该正确地转义 PHP输出到HTML页面的所有数据,以防止XSS( 跨站点脚本 )攻击或文本损坏。

另请参阅: 字符串PSR-1 ,它描述了最佳实践,包括正确使用短标签( <?= ... ?> )。

你好,世界!

用于在PHP中打印输出的最广泛使用的语言构造是echo

echo "Hello, World!\n";
 

或者,您也可以使用print

echo "Hello, World!\n";
 

两个语句执行相同的功能,但有细微差别:

  • echo 有一个void 返回值,而print 返回一个值为1int
  • echo 可以接受多个参数(仅限括号),而print 只接受一个参数
  • echoprint 一点

echoprint 都是语言结构,而不是函数。这意味着他们不需要围绕他们的论点括起来。为了与功能的外观一致,可以包括括号。 其他地方有大量使用echoprint 例子。

还提供C风格的printf 和相关功能,如下例所示:

echo "Hello, World!\n";
 

有关在PHP中输出变量的全面介绍,请参阅输出变量的值

指令分离

就像大多数其他C风格的语言一样,每个语句都以分号结束。此外,结束标记用于终止PHP块的最后一行代码。

如果PHP代码的最后一行以分号结尾,则如果最后一行代码后面没有代码,则结束标记是可选的。例如,我们可以在echo "No error"; 之后省略结束标记echo "No error"; 在以下示例中:

<?php echo "No error"; // no closing tag is needed as long as there is no code below
 

但是,如果PHP代码块后面有任何其他代码,则结束标记不再是可选的:

<?php echo "No error"; // no closing tag is needed as long as there is no code below
 

如果该代码块具有结束标记,我们也可以省略PHP代码块中最后一个语句的分号:

<?php echo "No error"; // no closing tag is needed as long as there is no code below
 

通常建议始终使用分号并对除最后一个PHP代码块之外的每个PHP代码块使用结束标记,如果该代码块后面没有更多代码。

所以,你的代码基本上应该是这样的:

<?php echo "No error"; // no closing tag is needed as long as there is no code below
 

来自Web服务器的非HTML输出

在某些情况下,使用Web服务器时,可能需要覆盖Web服务器的默认内容类型。例如,可能存在需要以plain textJSONXML 发送数据的情况。

header() 函数可以发送原始HTTP头。您可以添加Content-Type 标头以通知浏览器我们正在发送的内容。

考虑以下代码,我们将Content-Type 设置为text/plain

header("Content-Type: text/plain");
echo "Hello World";
 

这将生成包含以下内容的纯文本文档:

你好,世界

要生成JSON内容,请改用application/json 内容类型:

header("Content-Type: text/plain");
echo "Hello World";
 

这将生成application/json 类型的文档,其中包含以下内容:

{“回复”:“Hello World”}

请注意,必须在PHP生成任何输出之前调用header() 函数,否则Web服务器将已为响应发送标头。因此,请考虑以下代码:

header("Content-Type: text/plain");
echo "Hello World";
 

这会产生警告:

警告:不能更改头信息-头已经发出(输出开始/dir/example.php:2)在/dir/example.php3

使用header() ,其输出需要是从服务器发送的第一个字节。因此,在PHP开始标记<?php 之前,在文件开头没有空行或空格很重要。出于同样的原因,最好的做法(参见PSR-2 )从包含PHP的文件和文件最末端的PHP代码块中省略PHP结束标记?>

查看输出缓冲部分 ,了解如何将内容“捕获”到变量中以便稍后输出,例如,在输出标题后。

PHP内置服务器

PHP 5.4+附带内置开发服务器。它可用于运行应用程序,而无需安装生产HTTP服务器,如nginx或Apache。内置服务器仅用于开发和测试目的。

可以使用-S 标志启动它:

php -S <host/ip>:<port>
 

用法示例

  1. 创建一个index.php 文件,其中包含:
php -S <host/ip>:<port>
 
  1. 从命令行运行命令php -S localhost:8080 。不要包含http:// 。这将使用您作为文档根目录的当前目录启动侦听端口8080的Web服务器。

  2. 打开浏览器并导航到http://localhost:8080 。你应该看到你的“Hello World”页面。

组态

要覆盖默认文档根目录(即当前目录),请使用-t 标志:

php -S <host/ip>:<port>
 

例如,如果项目中有public/ 目录,则可以使用php -S localhost:8080 -t public/ 从该目录为项目提供服务。

日志

每次从开发服务器发出请求时,都会将如下所示的日志条目写入命令行。

php -S <host/ip>:<port>
 

PHP CLI

也可以使用CLI(命令行界面)直接从命令行运行PHP。

除了标准输入和输出方面的一些差异外,CLI与来自Web服务器的PHP基本相同。

触发

PHP CLI允许四种方式来运行PHP代码:

  1. 标准输入。运行不带任何参数的php 命令,但将PHP代码插入其中:
    echo '<?php echo "Hello world!";' | php
  2. 文件名作为参数。运行带有PHP源文件名称的php 命令作为第一个参数:
    echo '<?php echo "Hello world!";' | php
  3. 代码作为参数。在php 命令中使用-r 选项,然后运行代码。 <?php open标签不是必需的,因为参数中的所有内容都被视为PHP代码:
    echo '<?php echo "Hello world!";' | php
  4. 交互式shell。使用php 命令中的-a 选项启动交互式shell。然后,键入(或粘贴)PHP代码并点击返回
    echo '<?php echo "Hello world!";' | php

产量

在Web服务器PHP中生成HTML输出的所有函数或控件都可用于在stdout流(文件描述符1)中生成输出,并且在Web服务器PHP中的错误日志中生成输出的所有操作都将在stderr流中生成输出(文件描述符2)。

Example.php
echo '<?php echo "Hello world!";' | php
Shell命令行
echo '<?php echo "Hello world!";' | php

输入

请参阅: 命令行界面(CLI)

PHP标签

有三种标记用于表示文件中的PHP块。 PHP解析器正在查找开始和(如果存在)结束标记以分隔要解释的代码。

标准标签

这些标记是将PHP代码嵌入文件的标准方法。

<?php
    echo "Hello World";
?>
 
PHP 5.x 5.4

回声标签

所有PHP版本都提供这些标记,因为PHP 5.4始终启用。在以前的版本中,echo标签只能与短标签一起启用。

<?php
    echo "Hello World";
?>
 

短标签

您可以使用short_open_tag 选项禁用或启用这些标记。

<?php
    echo "Hello World";
?>
 

短标签:

  • 在所有主要的PHP 编码标准中都不允许使用
  • 官方文件中不鼓励
  • 在大多数发行版中默认禁用
  • 干扰内联XML的处理指令
  • 大多数开源项目的代码提交都不接受
PHP 5.x 5.6

ASP标签

通过启用asp_tags 选项,可以使用ASP样式的标记。

<?php
    echo "Hello World";
?>
 

这是一个历史性的怪癖,永远不应该被使用。它们在PHP 7.0中被删除。

Stats

8517 Contributors: 70
Wednesday, August 2, 2017
许可下: CC-BY-SA

不隶属于 Stack Overflow
Rip Tutorial: info@zzzprojects.com

下载电子书