PHPPHP入門

Download PHP for free

備註

在此處輸入圖像描述

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>Hello world!</p>
    </body>
</html>
 
PHP 5.x 5.4

echo 還有一個快捷語法,可讓您立即打印一個值。在PHP 5.4.0之前,此短語法僅適用於啟用了short_open_tag配置設置。

例如,請考慮以下代碼:

<p><?= "Hello world!" ?></p>
 

其輸出與以下輸出相同:

<p><?php echo "Hello world!"; ?></p>
 

在實際應用程序中,應該正確地轉義 PHP輸出到HTML頁面的所有數據,以防止XSS( 跨站點腳本 )攻擊或文本損壞。

另請參閱: 字符串PSR-1 ,它描述了最佳實踐,包括正確使用短標籤( <?= ... ?> )。

你好,世界!

用於在PHP中打印輸出的最廣泛使用的語言構造是echo

echo "Hello, World!\n";
 

或者,您也可以使用print

print "Hello, World!\n";
 

兩個語句執行相同的功能,但有細微差別:

  • echo 有一個void 返回值,而print 返回一個值為1int
  • echo 可以接受多個參數(僅限括號),而print 只接受一個參數
  • echoprint 一點

echoprint 都是語言結構,而不是函數。這意味著他們不需要圍繞他們的論點括起來。為了與功能的外觀一致,可以包括括號。 其他地方有大量使用echoprint 例子。

還提供C風格的printf 和相關功能,如下例所示:

printf("%s\n", "Hello, World!");
 

有關在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 "This will cause an error if you leave out the closing tag"; ?>
<html>
    <body>
    </body>
</html>
 

如果該代碼塊具有結束標記,我們也可以省略PHP代碼塊中最後一個語句的分號:

<?php echo "I hope this helps! :D";
echo "No error" ?>      
 

通常建議始終使用分號並對除最後一個PHP代碼塊之外的每個PHP代碼塊使用結束標記,如果該代碼塊後面沒有更多代碼。

所以,你的代碼基本上應該是這樣的:

<?php
    echo "Here we use a semicolon!";
    echo "Here as well!";
    echo "Here as well!";
    echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
    echo "Here we use a semicolon!";
    echo "Here as well!";
    echo "Here as well!";
    echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
    echo "Here we use a semicolon!";
    echo "Here as well!";
    echo "Here as well!";
    echo "Here we use a semicolon but leave out the closing tag";
 

來自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: application/json");

// Create a PHP data array.
$data = ["response" => "Hello World"];

// json_encode will convert it to a valid JSON string.
echo json_encode($data);
 

這將生成application/json 類型的文檔,其中包含以下內容:

{“回复”:“Hello World”}

請注意,必須在PHP生成任何輸出之前調用header() 函數,否則Web服務器將已為響應發送標頭。因此,請考慮以下代碼:

// Error: We cannot send any output before the headers
echo "Hello";

// All headers must be sent before ANY PHP output
header("Content-Type: text/plain");
echo "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
echo "Hello World from built-in PHP server";
 
  1. 從命令行運行命令php -S localhost:8080 。不要包含http:// 。這將使用您作為文檔根目錄的當前目錄啟動偵聽端口8080的Web服務器。

  2. 打開瀏覽器並導航到http://localhost:8080 。你應該看到你的“Hello World”頁面。

組態

要覆蓋默認文檔根目錄(即當前目錄),請使用-t 標誌:

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

例如,如果項目中有public/ 目錄,則可以使用php -S localhost:8080 -t public/ 從該目錄為項目提供服務。

日誌

每次從開發服務器發出請求時,都會將如下所示的日誌條目寫入命令行。

[Mon Aug 15 18:20:19 2016] ::1:52455 [200]: /
 

PHP CLI

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

除了標準輸入和輸出方面的一些差異外,CLI與來自Web服務器的PHP基本相同。

觸發

PHP CLI允許四種方式來運行PHP代碼:

  1. 標準輸入。運行不帶任何參數的php 命令,但將PHP代碼插入其中:
    echo '<?php echo "Hello world!";' | php
  2. 文件名作為參數。運行帶有PHP源文件名稱的php 命令作為第一個參數:
    php hello_world.php
  3. 代碼作為參數。在php 命令中使用-r 選項,然後運行代碼。 <?php open標籤不是必需的,因為參數中的所有內容都被視為PHP代碼:
    php -r 'echo "Hello world!";'
  4. 交互式shell。使用php 命令中的-a 選項啟動交互式shell。然後,鍵入(或粘貼)PHP代碼並點擊返回
    $ php -a
    Interactive mode enabled
    php > echo "Hello world!";
    Hello world!

產量

在Web服務器PHP中生成HTML輸出的所有函數或控件都可用於在stdout流(文件描述符1)中生成輸出,並且在Web服務器PHP中的錯誤日誌中生成輸出的所有操作都將在stderr流中生成輸出(文件描述符2)。

Example.php
<?php
echo "Stdout 1\n";
trigger_error("Stderr 2\n");
print_r("Stdout 3\n");
fwrite(STDERR, "Stderr 4\n");
throw new RuntimeException("Stderr 5\n");
?>
Stdout 6
 
Shell命令行
$ php Example.php 2>stderr.log >stdout.log;\
> echo STDOUT; cat stdout.log; echo;\
> echo STDERR; cat stderr.log\

STDOUT
Stdout 1
Stdout 3

STDERR
Stderr 4
PHP Notice:  Stderr 2
 in /Example.php on line 3
PHP Fatal error:  Uncaught RuntimeException: Stderr 5
 in /Example.php:6
Stack trace:
#0 {main}
  thrown in /Example.php on line 6
 

輸入

請參閱: 命令行界面(CLI)

PHP標籤

有三種標記用於表示文件中的PHP塊。 PHP解析器正在查找開始和(如果存在)結束標記以分隔要解釋的代碼。

標準標籤

這些標記是將PHP代碼嵌入文件的標準方法。

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

迴聲標籤

所有PHP版本都提供這些標記,因為PHP 5.4始終啟用。在以前的版本中,echo標籤只能與短標籤一起啟用。

<?= "Hello World" ?>
 

短標籤

您可以使用short_open_tag 選項禁用或啟用這些標記。

<?
    echo "Hello World";
?>
 

短標籤:

  • 在所有主要的PHP 編碼標準中都不允許使用
  • 官方文件中不鼓勵
  • 在大多數發行版中默認禁用
  • 干擾內聯XML的處理指令
  • 大多數開源項目的代碼提交都不接受
PHP 5.x 5.6

ASP標籤

通過啟用asp_tags 選項,可以使用ASP樣式的標記。

<%
    echo "Hello World";
%>
 

這是一個歷史性的怪癖,永遠不應該被使用。它們在PHP 7.0中被刪除。

APCu