PHPによるHello worldの最も簡単な実装は、単にテキストファイルとして「Hello world」を記述するだけでよい。Hello world!
PHPはテキストファイルにHTMLタグのように埋め込んで書き、それ以外の部分はそのまま出力されるため、上記は(プログラムとして実行される部分は存在しないものの)正しく処理系によって認識されて「Hello world!」を出力する。もう少しプログラムらしい書き方をすれば次のような記述が出来る。<?php echo 'Hello world!'; ?>
PHPの処理系はPHPタグ<?php ?>で囲われた部分を解釈・実行し、その外側の部分はそのまま文字列として出力する。単純にデータを出力する場合にはPHPタグを<?= ?>と略記することが可能であり、更にPHPタグがファイルの末尾にある場合はファイル末尾の空白や改行の影響を避けるためにPHPタグを閉じないことが推奨されるので、次のように書いても同じ結果が得られる。<?='Hello world!' 次のように、数値として「 5+2 」を行うと7が出力される。ただし「5+2」をシングルクォーテーションやダブルクォーテーションで囲むと、文字列と解釈されてそのまま出力される。<?php echo 5+2; //結果: 7 echo '5+2'; //結果: 5+2?> プログラミング言語としてのPHPを実行するための The PHP Group による公式な処理系の実装も、プログラミング言語としてのPHPと区別されることなく PHP と呼ばれる。2014年頃までプログラミング言語としてのPHPには規格などが存在しなかった[11]ため、公式の処理系の実装およびマニュアルの記述がその代わりとなっていた。2018年1月現在では、作業中となっているが、プログラミング言語としての仕様は処理系の実装と分かれて文書化されている[12]。 この実装はCで書かれており、PHP LicenseおよびZend Engine Licenseの下で公開されている自由なソフトウェアである。PHP4以降において、プログラミング言語としてのPHPを解釈・実行するエンジンとしてZend Engineが使用されており、PHP5よりZend Engine 2、PHP7ではZend Engine 3へと順次バージョンアップされている。Zend EngineはPHP 3の主要な開発者であるアンディ・ガトマンズおよびゼーブ・スラスキー(後にZend Technologies Ltd.を設立)により設計・開発されたスクリプト言語エンジンであり、現在はThe PHP GroupによりPHPと共に開発されている。Zend Engineは1つのプロセスが1つのインタプリタのコンテキストを持つように設計されていて、単独ではマルチスレッドを用いた処理をサポートしていない。PHPはそのソースコードのほとんどがPHP Licenseの下でリリースされるが、Zend EngineのコードについてはZend Engine Licenseが適用される。 実際のPHPの構成はZend Engineに加え、PHPの組み込み関数の実装、Webサーバや標準入出力とスクリプティングエンジンの間を仲介するSAPI (Server API) レイヤ、マルチスレッドで動くWebサーバのモジュールとして利用される場合にグローバル変数のセマンティクス[要曖昧さ回避]を提供するTSRM (Thread Safe Resource Manager)、プラットフォーム間での入出力機構やAPIの差異を吸収するStreamsレイヤを含む。一部の組み込み関数はプラットフォームごとに挙動が違うため、スクリプトによっては移植作業が必要になる場合がある。 公式の処理系に対して、CやC++で記述された拡張ライブラリを提供する PECL (The PHP Extension Community Library) というプロジェクトが存在する。基本的にPECLのライブラリは標準ではPHPに組み込まれてはいないものが多いが、PECLで開発されていたライブラリがPHPの本体に標準でバンドルされるようになったり(PDO)、逆に非推奨となった機能が本体より取り除かれ、PECLでメンテナンスが継続される(mcrypt PHPは数多くのDBMSを標準でサポートしている。提供されるAPIは、ベンダ固有モジュールというDBMS毎に提供される専用モジュールによるものと、ベンダ毎の差異を吸収して一貫したインターフェイスで様々なDBMSに接続出来るデータベース抽象化レイヤとがある。特にデータベースをより高度に抽象化して扱うライブラリなどでは、様々なDBMSに対応するためにPHP5.1で標準になったデータベース抽象化レイヤ PDO をバックエンドとして選択するものが多い。 PHPをWebサーバで動作させる方法には、実行ファイル形式 (CGI / FastCGI)、モジュール形式(mod_phpなど)がある。どの方法を利用するか(利用出来るか)はWebサーバにより異なる。実行ファイル形式によるCGIはほぼ全てのWebサーバに対応しているが、Apacheで動作させる場合はmod_phpとFastCGI、IIS、lighttpdやNginxで動作させる場合はFastCGIが利用可能である。 PHPに標準で実装されているWebサーバ用API (SAPI)の一覧を以下に挙げる。以前はこのほかにも存在したがPHP 7.0で削除された[13]。 とくに、HTTPリクエストの度にプロセスを起動させないインタフェース(Apacheとmod_phpの組み合わせ、またはlighttpdなどのFastCGIに対応したWebサーバ)での動作が高速である。 PHPの処理系は公式の実装を含めいくつかの異なる実装が存在する。そのうち比較的よく知られているものについて簡単に記述する。 PHPは学習コストの低さ、記述の容易さから多くのアプリケーションが開発されている。Wikipediaを動作させているアプリケーションであるMediaWikiもPHPによって記述されている。 本節ではPHPで書かれた代表的なアプリケーションを列挙する。
文字列と数値の違い
処理系
PECLによる拡張
対応する主要DBMS
Apache Derby
DB2
Informix Dynamic Server
InterBase
Microsoft SQL Server
mSQL
MySQL / MariaDB
ODBC
Oracle Database
PostgreSQL
Sybase Adaptive Server Enterprise
SQLite
Redis
Webサーバとの統合
CGI / FastCGI
FastCGIについては、php-cgiプログラムとFastCGI Process Manager (FPM)の2種類が用意されている。
Apache HTTP Server
litespeed
その他の処理系
HHVM (HipHop Virtual Machine) (PHP License, Zend Engine License)
Facebookによって開発された処理系で、実行の高速化のために実行時(JIT)コンパイル方式を採用している。HHVMは実行時にソースコードをHipHopバイトコードと呼ばれる独自の中間言語にコンパイルし、そこから動的に機械語にコンパイル/最適化を経て実行される。ただし、HHVM4.0 以降はPHPから派生した言語であるHack専用となり、PHP自体のサポートは削除された。
Phalanger (Apache License)
プラハ・カレル大学のオープンソースプロジェクトとして開発されている処理系で、PHPのソースコードをCILバイトコード
PHPで書かれたソフトウェア
ウェブアプリケーション、CMSなど
IBM WebSphere sMash[※ 2]
MediaWiki
phpBB
phpMyAdmin
PukiWiki
Serendipity Weblog System
SilverStripe CMS
WordPress
XOOPS
OpenPNE
KinagaCMS
ウェブアプリケーション・フレームワーク
CakePHP
CodeIgniter
Cosmos[※ 5]
Ethna