當前位置:才華齋>計算機>php語言>

新手怎麼入門PHP

php語言 閱讀(2.1W)

學習PHP的新手對於這門語言一定有很多疑問,能夠自己查的基礎知識就自己查,不要先問人。以下是本站小編精心為大家整理的新手入門PHP的一些套路,希望對大家有所幫助!更多內容請關注應屆畢業生網!

新手怎麼入門PHP

如何貢獻

幫助我們讓本網站作為 PHP 新手的最佳資源!在 GitHub 上貢獻

推廣

您可以在網站上放置 PHP之道 的橫幅來支援我們,讓 PHP 的新人知道哪裡可以獲取到好的資料!

廣告橫幅

Back to Top

 入門指南

使用當前穩定版本 (5.6)

如果你剛開始學習 PHP,請使用最新的穩定版本 PHP 5.6。PHP 近年來有了巨大的改進,增加了許多強大的 新特性。雖然 5.2 和 5.6 之間增加的版本號似乎很小, 但它代表了 重大的 改進。如果你想查詢一個函式及其用法,可以去官方手冊 中查詢。

內建的 web 伺服器

PHP 5.4 之後, 你可以不用安裝和配置功能齊全的 Web 伺服器,就可以開始學習 PHP。 要啟動內建的 Web 伺服器,需要從你的命令列終端進入專案的 Web 根目錄,執行下面的命令:

> php -S localhost:8000

瞭解更多內建的命令列伺服器

  Mac 安裝

OS X 系統會預裝 PHP, 只是一般情況下版本會比最新穩定版低一些。目前 Lion 是 5.3.10, Mavericks 是 5.4.17, Yosemite 則是 5.5.9, 但在 PHP 5.6 出來之後, 這些往往是不夠的。

這裡有許多方式在 OS X 上安裝 PHP 。

通過 Homebrew 安裝 PHP

Homebrew 是一個強大的 OS X 專用包管理器, 它可以幫助你輕鬆的安裝 PHP 和各種擴充套件。 Homebrew PHP 是一個包含與 PHP 相關的 Formulae,能讓你通過 homebrew 安裝 PHP 的倉庫。

也就是說, 你可以通過 brew install 命令安裝 php53, php54, php55 或者 php56 ,並且通過修改 PATH 變數來切換各個版本。或者你也可以使用 brew-php-switcher 來自動切換。

通過 Macports 安裝 PHP

MacPorts 是一個開源的,社群發起的專案,它的目的在於設計一個易於使用的系統,方便編譯,安裝以及升級 OS X 系統上的 command-line, X11 或者基於 Aqua 的開源軟體。

MacPorts 支援預編譯的二進位制檔案,因此你不必每次都重新從原始碼壓縮包編譯,如果你的系統沒有安裝這些包,它會節省你很多時間。

此時,你可以通過 port install 命名來安裝 php53,php54,php55 或者 php56,比如:

sudo port install php54

sudo port install php55

你也可以執行 select 命令來切換當前的 php 版本:

sudo port select --set php php55

 通過 phpbrew 安裝 PHP

phpbrew 是一個安裝與管理多個 PHP 版本的工具。它在應用程式或者專案需要不同版本的 PHP 時非常有用,讓你不再需要使用虛擬機器來處理這些情況。

 通過 Liip’s binary installer 安裝 PHP

是另一種流行的選擇,它提供了從5.3到5.6版本的單行安裝功能。 它並不會覆蓋Apple整合的PHP檔案,而是將其安裝在了一個獨立的目錄中(/usr/local/php5)。

 原始碼編譯

另一個讓你控制安裝 PHP 版本的選擇就是 自行編譯。 如果使用這種方法, 你必須先確認是否已經通過 「Apple’s Mac Developer Center」 下載、安裝 Xcode 或者 “Command Line Tools for XCode”。

整合包 (All-in-One Installers)

上面列出的解決方案主要是針對 PHP 本身, 並不包含:比如 Apache,Nginx 或者 SQL 伺服器。 整合包比如 MAMP 和 XAMPP會安裝這些軟體並且將他們綁在一起,不過易於安裝的背後也犧牲了一定的彈性。

 Windows 安裝

你可以從 下載二進位制包。 解壓後, 最好為你的 PHP 所在的根目錄( 所在的資料夾)設定PATH,這樣就可以從命令列中直接執行 PHP。

Windows 下有多種安裝 PHP 的方式,你可以 下載二進位制安裝包 並使用 安裝程式。從 PHP 5.3.0 之後,這個安裝程式將不再提供下載支援。

如果只是學習或者本地開發,可以直接使用 PHP 5.4+ 內建的 Web 伺服器, 還能省去配置伺服器的麻煩。如果你想要包含有網頁伺服器以及 MySql 的整合包,那麼像是Web Platform Installer, XAMPP, EasyPHP 和 WAMP 這類工具將會幫助你快速建立 Windows 開發環境。不過這些工具將會與線上環境有些許差別,如果你是在 Windows 下開發,而生產環境則部署至 Linux ,請小心。

如果你需要將生產環境部署在 Windows 上,那 IIS7 將會提供最穩定和最佳的效能。你可以使用 phpmanager (IIS7 的圖形化外掛) 讓你簡單的設定並管理 PHP。IIS7 也有內建的 FastCGI ,你只需要將 PHP 配置為它的處理器即可。更多詳情請見dedicated area on 。

Back to Top

程式碼風格指南

PHP 社群百花齊放,擁有大量的函式庫、框架和元件。PHP 開發者通常會在自己的專案中使用若干個外部庫,因此 PHP 程式碼遵循(儘可能接近)同一個程式碼風格就非常重要,這讓開發者可以輕鬆地將多個程式碼庫整合到自己的專案中。

PHP標準組 提出併發布了一系列的風格建議。其中有部分是關於程式碼風格的,即 PSR-0, PSR-1, PSR-2 和 PSR-4。這些推薦只是一些被其他專案所遵循的規則,如 Drupal, Zend, Symfony, CakePHP, phpBB, AWS SDK, FuelPHP, Lithium 等。你可以把這些規則用在自己的專案中,或者繼續使用自己的風格。

通常情況下,你應該遵循一個已知的標準來編寫 PHP 程式碼。可能是 PSR 的組合或者是 PEAR 或 Zend 編碼準則中的一個。這代表其他開發者能夠方便的閱讀和使用你的程式碼,並且使用這些元件的應用程式可以和其他第三方的元件保持一致。

閱讀 PSR-0

閱讀 PSR-1

閱讀 PSR-2

閱讀 PSR-4

閱讀 PEAR 編碼準則

閱讀 Symfony 編碼準則

你可以使用 PHP_CodeSniffer 來檢查程式碼是否符合這些準則,文字編輯器 Sublime Text 的外掛也可以提供實時檢查。

你可以通過以下兩個工具來自動修正你的程式語法,讓它符合標準。 一個是 PHP Coding Standards Fixer,它具有良好的測試。 另外一個工具是 s, 它是 sublime text 的一個非常流行的外掛sublime-phpfmt,雖然比較新,但是在效能上有了很大的提高,這意味著實時的修復語法會更加的流暢。

你也可以手動執行 phpcs 命令:

phpcs -sw --standard=PSR2

它會顯示出相應的錯誤以及如何修正的方法。同樣地,這條命令也可以用在 git hook 中,如果你的分支程式碼不符合選擇的程式碼標準則無法提交。

所有的變數名稱以及程式碼結構建議用英文編寫。註釋可以使用任何語言,只要讓現在以及未來的小夥伴能夠容易閱讀理解即可。

Back to Top

 語言亮點

  程式設計正規化

PHP 是一個靈活的動態語言,支援多種程式設計技巧。這幾年一直不斷的發展,重要的里程碑包含 PHP 5.0 (2004) 增加了完善的面向物件模型,PHP 5.3 (2009) 增加了匿名函式與名稱空間以及 PHP 5.4 (2012) 增加的 traits。

  面向物件程式設計

PHP 擁有完整的面向物件程式設計的特性,包括類,抽象類,介面,繼承,建構函式,克隆和異常等。

閱讀 PHP 面向物件程式設計

閱讀 Traits

函數語言程式設計 Functional Programming

PHP 支援函式是”第一等公民”,即函式可以被賦值給一個變數,包括使用者自定義的或者是內建函式,然後動態呼叫它。函式可以作為引數傳遞給其他函式(稱為高階函式),也可以作為函式返回值返回。

PHP 支援遞迴,也就是函式自己呼叫自己,但多數 PHP 程式碼使用迭代。

自從 PHP 5.3 (2009) 之後開始引入對閉包以及匿名函式的支援。

PHP 5.4 增加了將閉包繫結到物件作用域中的特性,並改善其可呼叫性,如此即可在大部分情況下使用匿名函式取代一般的函式。

學習更多 PHP 函數語言程式設計

 閱讀匿名函式

  閱讀閉包類

更多關於 Closures RFC

閱讀 Callables

閱讀動態呼叫函式 call_user_func_array()

超程式設計

PHP 通過反射 API 和魔術方法,可以實現多種方式的超程式設計。開發者通過魔術方法,如 __get(), __set(), __clone(),__toString(), __invoke(),等等,可以改變類的行為。Ruby 開發者常說 PHP 沒有 method_missing 方法,實際上通過__call() 和 __callStatic() 就可以完成相同的功能。

  閱讀魔術方法

  閱讀反射

  閱讀過載

  名稱空間

如前所述,PHP 社群已經有許多開發者開發了大量的程式碼。這意味著一個類庫的 PHP 程式碼可能使用了另外一個類庫中相同的類名。如果他們使用同一個名稱空間,那將會產生衝突導致異常。

名稱空間 解決了這個問題。如 PHP 手冊裡所描述,名稱空間好比作業系統中的目錄,兩個同名的檔案可以共存在不同的目錄下。同理兩個同名的 PHP 類可以在不同的 PHP 名稱空間下共存,就這麼簡單。

因此把你的程式碼放在你的名稱空間下就非常重要,避免其他開發者擔心與第三方類庫衝突。

PSR-4 提供了一種名稱空間的'推薦使用方式,它提供一個標準的檔案、類和名稱空間的使用慣例,進而讓程式碼做到隨插即用。

2014 年 10 月,PHP-FIG 廢棄了上一個自動載入標準: PSR-0,而採用新的自動載入標準 PSR-4。但 PSR-4 要求 PHP 5.3 以上的版本,而許多專案都還是使用 PHP 5.2,所以目前兩者都能使用。如果你在新應用或擴充套件包中使用自動載入標準,應優先考慮使用 PSR-4。

  閱讀名稱空間

閱讀 PSR-0

閱讀 PSR-4

PHP 標準庫

PHP 標準庫 (SPL) 隨著 PHP 一起釋出,提供了一組類和介面。包含了常用的資料結構類 (堆疊,佇列,堆等等),以及遍歷這些資料結構的迭代器,或者你可以自己實現 SPL 介面。

閱讀 SPL

上的 SPL 視訊教程(付費)

命令列介面

PHP 是為開發 Web 應用而建立,不過它的命令列指令碼介面(CLI)也非常有用。PHP 命令列程式設計可以幫你完成自動化的任務,如測試,部署和應用管理。

CLI PHP 程式設計非常強大,可以直接呼叫你自己的程式程式碼而無需建立 Web 圖形介面,需要注意的是不要把 CLI PHP 指令碼放在公開的 web 目錄下!

在命令列下執行 PHP :

> php -i

選項 -i 將會列印 PHP 配置,類似於 phpinfo() 函式。

選項 -a 提供互動式 shell,和 Ruby 的 IRB 或 python 的互動式 shell 相似,此外還有很多其他有用的命令列選項。

接下來寫一個簡單的 “Hello, $name” CLI 程式,先建立名為 的指令碼:

if($argc != 2) {

echo "Usage: php [name].n";

exit(1);

}

$name = $argv[1];

echo "Hello, $namen";

PHP 會在指令碼執行時根據引數設定兩個特殊的變數,$argc 是一個整數,表示引數個數,$argv 是一個數組變數,包含每個引數的值, 它的第一個元素一直是 PHP 指令碼的名稱,如本例中為 。

命令執行失敗時,可以通過 exit() 表示式返回一個非 0 整數來通知 shell,常用的 exit 返回碼可以檢視列表.

執行上面的指令碼,在命令列輸入:

> php

Usage: php [name]

> php world

Hello, world

學習如何在命令列執行 PHP

學習如何在 Windows 環境下執行 PHP 命令列程式

Xdebug

合適的偵錯程式是軟體開發中最有用的工具之一,它使你可以跟蹤程式執行結果並監視程式堆疊中的資訊。 Xdebug 是一個 php 的偵錯程式,它可以被用來在很多 IDE(整合開發環境) 中做斷點除錯以及堆疊檢查。它還可以像 PHPUnit 和 KCacheGrind 一樣,做程式碼覆蓋檢查或者程式效能跟蹤。

如果你仍在使用 var_dump()/print_r() 調錯,經常會發現自己處於困境,並且仍然找不到解決辦法。這時,你該使用偵錯程式了。

安裝 Xdebug 可能很費事,但其中一個最重要的「遠端除錯」特性 —— 如果你在本地開發,並在虛擬機器或者其他伺服器上測試,遠端除錯可能是你想要的一種方式。

通常,你需要修改你的 Apache VHost 或者 cess 檔案的這些值:

php_value te_host=192.168.?.?

php_value te_port=9000

「remote host」 和 「remote port」 這兩項對應和你本地開發機監聽的地址和埠。然後將你的 IDE 設定成「listen for connections」模式,並訪問網址:

_SESSION_START=1

你的 IDE 將會攔截當前執行的指令碼狀態,執行你設定的斷點並檢視記憶體中的值。

圖形化的偵錯程式可以讓你非常容易的逐步的檢視程式碼、變數,以及執行時的 evel 程式碼。許多 IDE 已經內建或提供了外掛支援 XDebug 圖形化偵錯程式。比如 MacGDBp 是 Mac 上的一個免費,開源的單機偵錯程式。

學習更多 Xdebug

  學習更多 MacGDBp

Back to Top

  依賴管理

PHP 有很多可供使用的庫、框架和元件。通常你的專案都會使用到其中的若干項 - 這些就是專案的依賴。直到最近,PHP 也沒有一個很好的方式來管理這些專案依賴。即使你通過手動的方式去管理,你依然會為自動載入器而擔心。但現在這已經不再是問題了。

目前 PHP 有兩個使用較多的包管理系統 - Composer 和 PEAR。Composer 是 PHP 所使用的主要的包管理器,然而在很長的一段時間裡,PEAR 曾經扮演著這個角色。你應該瞭解 PEAR 是什麼,因為即使你從來沒有使用過它,你依然有可能會碰到對它的引用。

Composer 與 Packagist

Composer 是一個傑出 的依賴管理器。在 檔案中列出你專案所需的依賴包,加上一點簡單的命令,Composer 將會自動幫你下載並設定你的專案依賴。

現在已經有許多 PHP 第三方包已相容 Composer,隨時可以在你的專案中使用。這些「packages(包)」都已列在 Packagist,這是一個官方的 Composer 相容包倉庫。

如何安裝 Composer

你可以安裝 Composer 到區域性 (在你當前工作目錄;這裡不是很推薦)或是全域性(e.g. /usr/local/bin)。我們假設你想安裝 Composer 到區域性。在你的專案根目錄輸入:

curl -s | php

這條命令將會下載 (一個 PHP 二進位制檔)。你可以使用 php 執行這個檔案用來管理你的專案依賴。 請注意: 假如你是直接下載程式碼來編譯,請先線上閱讀程式碼確保它是安全的。

  Windows環境下安裝

對於Windows 的使用者而言最簡單的獲取及執行方法就是使用 ComposerSetup 安裝程式,它會執行一個全域性安裝並設定你的$PATH,所以你在任意目錄下在命令列中使用 composer。

如何手動安裝 Composer

手動安裝 Compose r是一個高階的技術;僅管如此還是有許多開發者有各種原因喜歡使用這種互動式的應用程式安裝 Composer。在安裝前請先確認你的PHP安裝專案如下:

  正在使用一個滿足條件的 PHP 版本

檔案可以正確的被執行

相關的目錄有足夠的許可權

相關有問題的擴充套件沒有被載入

相關的 設定已完成

由於手動安裝沒有執行這些檢查,你必須自已衡量決定是否值得做這些事,以下是如何手動安裝 Composer :

curl -s -o $HOME/local/bin/composer

chmod +x $HOME/local/bin/composer

路徑 $HOME/local/bin (或是你選擇的路徑) 應該在你的 $PATH 環境變數中。這將會影響 composer 這個命令是否可用.

當你遇到文件指出執行 Composer 的命令是 php install時,你可以使用下面命令替代:

composer install

本章節會假設你已經安裝了全域性的 Composer。

  如何設定及安裝依賴

Composer 會通過一個 檔案持續的追蹤你的專案依賴。 如果你喜歡,你可以手動管理這個檔案,或是使用 Composer 自己管理。composer require 這個指令會增加一個專案依賴,如果你還沒有 檔案, 將會建立一個。這裡有個例子為你的專案加入 Twig 依賴。

composer require twig/twig:~1.8

另外 composer init 命令將會引導你建立一個完整的 檔案到你的專案之中。無論你使用哪種方式,一旦你建立了 檔案,你可以告訴 Composer 去下載及安裝你的依賴到 vendors/ 目錄中。這命令也適用於你已經下載並已經提供了一個 的專案:

composer install

接下來,新增這一行到你應用的主要 PHP 檔案中,這將會告訴 PHP 為你的專案依賴使用 Composer 的自動載入器。

require 'vendor/';

現在你可以使用你專案中的依賴,且它們會在需要時自動完成載入。

  更新你的依賴

Composer 會建立一個 檔案,在你第一次執行 php install 時,存放下載的每個依賴包精確的版本編號。假如你要分享你的專案給其他開發者,並且 檔案也在你分享的檔案之中的話。 當他們執行 php install 這個命令時,他們將會得到與你一樣的依賴版本。 當你要更新你的依賴時請執行 php update。

當你需要靈活的定義你所需要的依賴版本時,這是最有用。 舉例來說需要一個版本為 ~1.8 時,意味著 “任何大於 1.8.0 ,但小於 2.0.x-dev 的版本”。你也可以使用萬用字元 * 在 1.8.* 之中。現在Composer在composer update 時將升級你的所有依賴到你限制的最新版本。

  更新通知

要接收關於新版本的更新通知。你可以註冊 VersionEye,這個 web 服務可以監控你的 Github 及 BitBucket 帳號中的 檔案,並且當包有新更新時會發送郵件給你。

  檢查你的依賴安全問題

Security Advisories Checker 是一個 web 服務和一個命令列工具,二者都會仔細檢查你的 檔案,並且告訴你任何你需要更新的依賴。

  處理 Composer 全域性依賴

Composer 也可以處理全域性依賴和他們的二進位制檔案。用法很直接,你所要做的就是在命令前加上global字首。如果你想安裝 PHPUnit 並使它全域性可用,你可以執行下面的命令:

composer global require phpunit/phpunit

這將會建立一個 ~/oser 目錄存放全域性依賴,要讓已安裝依賴的二進位制命令隨處可用,你需要新增 ~/oser/vendor/bin目錄到你的 $PATH 變數。