PHP: Hypertext Preprocessorとは? わかりやすく解説

Weblio 辞書 > コンピュータ > IT用語辞典 > PHP: Hypertext Preprocessorの意味・解説 

PHP

フルスペル:PHP Hypertext Preprocessor
読み方:ピーエイチピー
別名:Personal Home Page

PHPとは、スクリプト言語の一種で、サーバーサイドで動作し、HTMLの文書内に統合される形で記述されることを特徴とするプログラミング言語のことである。動的なWebページを生成するために用いられる。

PHPのプログラムは、HTML内にPHP用の要素を示す特別のタグを設けて、その中に記述される。通常PHPプログラムを含むファイルは、拡張子に「.php」が付けられる。ファイルの実行時には、クライアントに出力される前にWebサーバー上で処理される。PHPのインタプリタは、Apacheのモジュール(mod_php5など)として組み込まれ、Apacheと一体になって実行されるため、CGIの実行によるサーバーサイドプログラムよりも高速である。PHPは、JavaやC言語、C++と類似の構文を持っている。変数定義、関数定義、クラス定義、継承、例外処理などが実行可能である。

PHPは、HTMLの中にスクリプトを埋め込む形で用いることができ、それ自体が「テンプレート」でもあるため、簡単に使うことができる。フォームデータなどのHTTP要求を簡単に解析できる仕組み、MySQLやPostgreSQLとの接続、PDFの生成など、利用頻度の高そうな機能が標準レベルで多数組み込まれている。小規模な会員データや商品データを格納するデータベースとそのデータを検索したり表示したりするWebデータベースシステムのような小規模な動的サイトであれば、PHPを用いて迅速に構築することができる。また、オブジェクト指向の機能や、アプリケーションフレームワークを活用することにより、ある程度の大規模な開発にも対応できる。このような特徴により、PHPは多くのWebアプリケーション開発者から支持を得、多くのWebサイトで採用されている。

PHPは、1995年にRasmus Lerdorfが。自分のホームページを生成するために「PHP/FI」(Personal Home Page/Forms Interpreter)と呼ばれるPerlモジュールを作成したことから始まったとされる。その後エンジン部分がC言語で書き直され、大幅に性能が向上した。1998年にPHP 3.0が発表され、機能が大幅に強化され、急速に普及した。2000年には、PHP 4.0が発表され、基本的なオブジェクト指向プログラミング機能が追加された。2004年には、オブジェクト指向機能が本格的に整備され、PHP 5.0が発表された。PHPのオブジェクト機能は、単一継承やカプセル化が利用でき、Java同様のtry catch構文による例外処理も可能となっている。なお、PHP 4.0からは、Zend社が作成したZendエンジンがコアに採用され、インタープリタの性能が大幅に改善されている。

PHPの正式名は、当初「Personal Home Page Tools」であったが、その後「PHP Hypertext Preprocessor」という再帰的頭字語が与えられた。

PHPには、PEARのライブラリ群、mojavi、Ethna、symfony、CakePHP、CodeIgniter、ZendFrameworkなどのWebアプリケーションを効率的に構築できるフレームワークや、Smartyのようなテンプレートエンジンなど多数の外部ライブラリが存在している。JavaのStrutsのようなMVCモデルや、Ruby On RailsのようなRAD(Rapid Application Development)を利用した開発が可能となっている。また、PHPには、コマンドライン版も存在しており、これによりシェル上でも実行できるため、PerlやRubyのような使い方も可能である。またWindowsやMac OSなどのUNIX以外のプラットフォームでも利用可能である。


参照リンク
PHP: Hypertext Preprocessor
日本 PHP ユーザ会 (Japan PHP Users Group) :: メイン
プログラミングのほかの用語一覧
スクリプト言語:  LunaScript  モバイルコード  Open Ajax  PHP  Perl  Python  Ruby

PHP: Hypertext Preprocessor

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/02/21 17:40 UTC 版)

PHP
パラダイム 命令型, オブジェクト指向
登場時期 1995年 (1995)
設計者 ラスマス・ラードフ
開発者 The PHP Group
最新リリース

7.1.2 - 2017年2月17日(4日前) (2017-02-17)[1]

[+/−]
評価版リリース

7.1.0 Release Candidate 6 - 2016年11月10日(3か月前) (2016-11-10)

[+/−]
型付け 強い動的型付け
影響を受けた言語 C, C++, Java, Perl, Tcl
プラットフォーム クロスプラットフォーム
ライセンス PHP License
ウェブサイト php.net
PHP - ウィキブックス

PHP: Hypertext Preprocessor(ピー・エイチ・ピー ハイパーテキスト プリプロセッサー)とは、動的にHTMLデータを生成することによって、動的なウェブページを実現することを主な目的としたプログラミング言語、およびその言語処理系である。一般的には PHP と省略して用いられており、これは「個人的なホームページ」を意味する英語の "Personal Home Page" に由来する[2]。

PHPはサーバーサイド・スクリプト言語として利用されており、Webサーバ上で動作し、Webサーバ上でPHPスクリプトの文書が要求されるたびに、そのPHPスクリプトが実行され、結果をウェブブラウザに対して送信する。平易な文法のため初心者でも習得しやすく、また大規模な開発にも多く用いられている。多くのフレームワークやライブラリが存在し、開発の手助けとなっている。

数多くのオープンソースウェブアプリケーションに利用されている一方、しばしば脆弱性の報告がなされ、過去に深刻なセキュリティホールが何度か報告されている。

PHPのマスコットアニマルとしてはelePHPantという象が用いられる。

特徴

PHPには以下の特徴を持ち合わせている。

  • サーバーサイドWebアプリケーション構築のための豊富な組み込み関数。
  • C言語やJava言語に似た、平易な文法。
  • データベースへの容易なアクセス(組み込み関数、および、標準ライブラリPDOによる)。
  • クラスベースオブジェクト指向のサポート。
  • 例外処理 (try, catch, throw) のサポート。
  • 多くのオープンソースのフレームワークやライブラリが利用可能である。
  • ASP, JSPと似たHTML埋め込み型の構文をとる。ただし最近のフレームワークを使った開発では、埋め込み型の構文を使用しないことが多い。
  • 様々な付加機能がPEARというオンラインライブラリ集でモジュールとして提供されている。pearコマンドで導入/管理ができる。PerlでいうところのCPANである。Composer登場以後は、PEARと同様にPHPのパッケージ管理機能として利用されている。
  • ウィキ構築に用いられるソフトのMediaWiki(Wikipediaで使われている)やPukiwikiを始めとして、数多くのオープンソースウェブアプリケーション開発に利用されている。
  • 処理系本体は、C言語で書かれている。

技術構成

スクリプト実行環境

PHP4以降、Zend Engineをスクリプト言語を処理するエンジンとして利用している。Zend Engineは、PHP3の開発者によって設立されたZend Technologies Ltd.により開発されたオープンソースのスクリプト言語エンジンである。Zend Engineは1つのプロセスが1つのインタプリタのコンテキストを持つように設計されていて、単独ではマルチスレッドを用いた処理をサポートしていない。

スクリプト実行環境としてのPHPは、Zend Engineに加え、PHPの組み込み関数の実装、Webサーバや標準入出力とスクリプティングエンジンの間を仲介するSAPI (Server API) レイヤ、マルチスレッドで動くWebサーバのモジュールとして利用される場合にグローバル変数のセマンティクスを提供するTSRM (Thread Safe Resource Manager)、プラットフォーム間での入出力機構やAPIの差異を吸収するStreamsレイヤからできている。

しかし、一部の組み込み関数はプラットフォームごとに挙動が違うため、スクリプトによっては移植作業が必要になる場合がある。

また、.NET Framework上のPhalanger、JITコンパイルを行うHHVMなど、公式のZend Engine以外にもPHPの実装が存在する。

Webサーバとの統合

PHPをWebサーバで動作させる方法には、実行ファイル形式 (CGI / FastCGI)、モジュール形式(mod_php / ISAPI など)がある。どの方法を利用するか(利用できるか)はWebサーバにより異なる。実行ファイル形式によるCGIはほぼ全てのWebサーバに対応しているが、Apacheで動作させる場合はmod_phpとFastCGI、IISで動作させる場合はFastCGIとISAPI、lighttpdやNginxで動作させる場合はFastCGIが使用できる。

このほかにも、PHPに標準で実装されているWebサーバ用APIは多い。以下に一覧を挙げる。

とくに、HTTPリクエストの度にプロセスを起動させないインタフェース(Apacheとmod_phpの組み合わせ、またはlighttpdなどのFastCGIに対応したWebサーバ)での動作が高速である。

構文

文法はC言語、Java、Perlなどのプログラミング言語から強く影響を受けている。 その開発の経緯から、PHPは非常に多くの組み込み関数を有しており、動的Webページを速やかに作成できるのが特徴である。

幾つかのサンプルコードとその実行結果を交え、PHPの文書構造を解説する。

基本と制御構造

PHPは<?phpと?>で囲まれた内部をPHPコードと認識し実行する。 ファイルの末尾が?>である場合にはこれを省略出来、また改行や空白などの混入を防ぐため省略することが推奨されている。

<?php
if ($a) {
?>
<div>HTMLコード</div>
<?php
} else {
?>
<span><?php echo "aは偽"; ?></span>
<?php
}

<?phpと?>で囲まれていない部分はプログラムとは解釈されずそのまま出力される。 PHPコード部分に文法上の問題がなければPHPはこれを実行する。 出力は以下のようになる(便宜上2通り記す)。

$aが真の時の出力
<div>HTMLコード</div>
$aが偽の時の出力
<span>aは偽</span>

if、else (elseif) は条件評価の制御構造としてよく知られた構文であり、他にもPHPではfor、while (do)、foreach、switch文などの制御構造がサポートされている。 break、continue等のループ制御構造文もあるが、ループ式を命名するlabel文構造は持たない。

PHPにおいて変数は先頭に記号$の付いた文字列で表される。 PHPは比較的変数に寛容であり、変数が確保されていない場合は、これをエラーとせずにnullとして処理する(エラーレベルの設定によってはE_NOTICEレベルの警告を発生する)。

変数名は、別の変数が格納している文字列を利用することも出来る。 以下はその例である。

<?php
$a = x;
$$a = y;   // $a==x なので $x = y;と等価
echo $x;   // yを出力

データ型

PHPは以下の標準型をサポートする

配列

配列を生成するにはarray()を用いるか、PHP5.4以降ならば[]を用いる。

<?php
// arrayでの生成
$a = array("wikipedia", "mediawiki", 3 => "commons");
echo $a[0];   // wikipedia
echo $a[3];   // commons

// PHP5.4以降ならこのように書ける
$a = ["wikipedia", "mediawiki", 3 => "commons"];

// 明示的な代入
$b[0] = "wikipedia";
$b[] = "mediawiki"; // []の中身を省略すると
$b[] = "commons";   // 定義済みの最大の整数インデックス + 1の要素に代入する
echo $b[2];   // commons

グローバル変数

PHPでは通常、グローバル変数を利用するには明示的にglobal宣言をする必要があるが、スーパーグローバル変数として標準で定義されているいくつかの変数はglobal宣言なしで利用出来る。

$GLOBALS
グローバルスコープの変数の名前をキーとし、その名前の変数を参照する連想配列。

以下のグーパーグローバル変数はPHP4.1以降で利用可能である。 PHP4.0以前では括弧内のグローバル変数(スーパーグローバルではない)を用いてアクセスする必要があった。 これら括弧内の変数はPHP4.1で非推奨となり、PHP5.4で削除された。

$_SERVER ($HTTP_SERVER_VARS)
実行環境情報、特にサーバから提供される情報
$_ENV ($HTTP_ENV_VARS)
環境変数の連想配列
$_POST ($HTTP_POST_VARS)
HTTP POSTメソッドで渡された変数の連想配列
$_GET ($HTTP_GET_VARS)
HTTP GETメソッドで渡された変数の連想配列
$_COOKIE ($HTTP_COOKIE_VARS)
HTTP COOKIEとして渡された変数の連想配列
$_REQUEST
$_GET、$_POST、$_COOKIE、$_FILESおよびURIクエリー(ロケーション)を連想配列として格納する。
$_FILES
HTTPファイルアップロード処理変数
$_SESSION
セッション変数の連想配列

全容把握には、var_dump等で参照するとよい。

<?php
var_dump($_SERVER);

クラスとオブジェクト

PHPはクラスベースのオブジェクト指向構文をサポートしている。 以下に例を挙げる。

<?php
// クラスの定義
class abc
{
	public $a = null;
	public function b()
	{
		echo "Class abc, Method b", PHP_EOL;
		return "abc->b";
	}

	public function __construct()
	{
		echo "abc: constructor", PHP_EOL;
	}
}

// クラスabcを継承したクラスdefを定義
class def extends abc
{
	public function __construct()
	{
		parent::__construct();  // 親クラスのコンストラクタを呼ぶ
		echo "def: constructor", PHP_EOL;
	}

  // 親クラスのメソッドbをオーバーライドする
	public function b()
	{
		echo "Class def, Method b", PHP_EOL;
	}

	public function c()
	{
		parent::b();
	}
}

$c = new abc();
$c->b();
$f = new def();
$f->b();

PHPではnewキーワードを使ってクラスをインスタンス化することが出来る。 クラスの継承はextendsキーワードを用いることで単一継承のみ可能で、多重継承はサポートされていない。 クラスのプロパティやメソッドの宣言および定義ではprivate/protected/publicの3種類の可視性が指定出来る(PHP4ではプロパティの宣言でvarキーワードが使われており、秘匿することが出来なかった)。

parentキーワードはサブクラスが継承したスーパークラスを表しており、サブクラスでメソッドをオーバーライドしたとき、スーパークラスの同名メソッドを呼ぶ場合などに用いることが出来る。 上記の例では、クラスdefのスーパークラスabcのメソッドbはオーバーライドされており、スーパークラスの同名メソッドをparent::b()で呼び出している。 実行結果は次のようになる。

abc: constructor
Class abc, Method b
abc: constructor
def: constructor
Class def, Method b
Class abc, Method b

private/protected/publicおよびfinalの各キーワードはPHP5で導入された。 メソッドに対してfinalキーワードを用いると子クラスでのオーバーライドを禁止することが出来る。 クラスに対して適用すればクラスの継承が禁止される。

またstaticキーワードを用いることで、クラスのインスタンス化を行わなくてもアクセス可能なプロパティやメソッドを定義出来る。

class abc
{
	// インスタンス化しなくてもアクセス出来るメソッド
	public static function b()
	{
	}
}

abc::b(); // アクセスするには クラス名::メソッド() という構文を用いる


インタフェースと抽象化

PHP5以降では、クラスの抽象化およびインタフェースが導入された。 これらの構文はJavaやObjective-Cなどに近い構文をとる。


インタフェース

まず最初に具体的なソースコードを示す。

<?php
// インタフェースの定義
// メソッドは実装を持たない
interface classTemplates
{
	public function methodA($arg1, $arg2);
	public function methodB($arg1);
}

// インタフェースを実装したクラスの定義
// インタフェースに宣言されたすべてのメソッドを実装しなければならない
class appTemplate implements classTemplates
{
	public function methodA($arg1, $arg2)
	{
	}
	public function methodB($arg1)
	{
	}
}

インタフェースを定義するにはclassキーワードの代わりにinterfaceキーワードを用いる。 インタフェースの定義では可視性がpublicあるいはprotectedなものだけを宣言し、メソッドには実装を書いてはならない。 これは、インタフェースがクラスの利用者からその具体的な実装を隠匿(クラスの抽象化)し、どのようなメソッド(API)を持つかだけを宣言するものであることによる(privateはそもそも外部から見えない)。

クラスの宣言においてimplementsキーワードを用いてインタフェースを指定することで、そのクラスにインタフェースで宣言したメソッドを全て実装することを明示することが出来る。


インタフェースの継承

クラスと同様、インタフェースもextendsキーワードで継承を行うことが出来る。

<?php
interface classTemplatesModel
{
	public function methodAlpha($arg1, $arg2);
	public function methodBeta($arg1);
}

interface classTemplates extends classTemplatesModel
{
	public function methodGamma();
}
interfaceの多重継承について

クラスと異なり、インタフェースには実装が伴わないことから多重継承が可能である。 複数のインタフェースを実装するにはimplementsキーワードにカンマ区切りで複数のインタフェースを指定する。

<?php
interface classTemplatesModel
{
	public function methodAlpha($arg1, $arg2);
	public function methodBeta($arg1);
}

interface classTemplates
{
	public function methodGamma();
}

class appTemplate implements classTemplates, classTemplatesModel
{
	public function methodAlpha($arg1, $arg2)
	{
	}
	public function methodBeta($arg1)
	{
	}
	public function methodGamma()
	{
	}
}


抽象クラスの定義

クラスの定義においてabstractキーワードを用いることで抽象クラスを定義出来る。 抽象クラスは通常の実装を持つメソッドと(やはりabstractキーワードを付けた)実装を持たないメソッド(抽象メソッド)が混在することが許されたクラスであり、インスタンス化することは出来ない。

抽象クラスは継承されるために作成され、サブクラスが抽象クラスでない限りすべての抽象メソッドがサブクラスで実装される必要がある。

<?php
abstract class Alpha
{
	abstract public function methodAlpha($arg1, $arg2);

	protected function methodBeta($arg1)
	{
		echo "Alpha クラスで実装されたmathodBeta メソッド¥n";
	}

	public function __destruct()
	{
		echo "インスタンスを破棄、メモリを開放[Alpha::destruct]¥n";
	}
}

class Beta extends Alpha
{
	public function __construct()
	{
		$this->methodAlpha("","");
		$this->methodBeta("");
	}

	public function methodAlpha($arg1, $arg2)
	{
		echo "Beta クラスで実装されたmethodAlpha メソッド¥n";
	}
}

new Beta();


実行結果
Beta クラスで実装された methodAlpha メソッド
Alpha クラスで実装された methodBeta メソッド
インスタンスを破棄、メモリを開放 [Alpha::destruct]

PDO

PHPではMySQLやPostgreSQLなど主要なRDBMSへの接続については、それぞれ専用の組み込み関数が用意されている。 しかし専用の組み込み関数を利用すると複数のデータベースへの対応やデータベースの切り替えに際して大きな移行コストが必要となる。

そのコストを低減するため、PHP5よりPHP Data Object (PDO)と呼ばれる薄いデータベース抽象化レイヤが標準で提供されている。 PDOは薄いレイヤであり、データベースへの接続を抽象化し高速に動作する代わりに、SQLビルダなどの機能は提供していない。


その他

include、require等の演算子で外部ファイルに記述されたPHPコードを追加ないし、参照、実行が可能である。returnは戻り値を返す文書構造である。return()とすることで戻り値を評価することも可能である。

Unixコマンドを実行可能であるが、CGIより実行権限は低くなっている。また一部関数はこのUnixコマンドを参照するため、Windows系OSでは使用できない関数がある。コマンドを参照する関数を使用する際は、サーバの設定でパスが通っている必要がある。

幾つもの拡張により扱える関数は環境に依りまちまちである。詳しくは外部リンクのリファレンスを参照されたい。

コーディング規約

複数のPHPプロジェクト参加者からなる団体のPHP-FIGにより、PSRと呼ばれる相互運用性を高める規約が制定されている。ファイル名や一般的なコーディング規約だけでなく、クラスのオートロード方法等の実装部分にまで及んでおり、PSR-1、PSR-2等と複数の分野に分かれて制定されている[3]。

代表的なソフトウェア

ウェブアプリケーション、CMSなど

ウェブアプリケーション・フレームワーク

テンプレートエンジン

対応する主要DBMS

歴史

PHP 1.0

1995年6月8日にリリース。ラスマス・ラードフが開発。C言語で書かれた CGI 用のツール集だった。ラスマスはそれらのツール群を PHP (Personal Home Page Tools) と名づけた。初期は Perl で書かれていたという言説を見かけるが、それは誤り。[4]

PHP Version 2 (PHP/FI)

1996年4月16日にリリース。 FI(Form Interpreter、SQLによるDBMSツール)が統合され、1997年に PHP/FI2.0 となる。フルスペルは「Personal Home Page Construction Kit/Form Interpreter」。

PHP 3.0

1998年6月6日にリリース。 PHP/FI を元に、アンディ・ガトマンズとゼーブ・スラスキーによって PHP3 (PHP: Hypertext Preprocessor) が再度書き直された。

PHP 4

PHP 4.0.0

2000年5月22日にリリース。PHP3 を大幅に機能拡張。Zend Engine 導入。

PHP 4.1.0

2001年12月10日にリリース。スーパーグローバルが追加される。

PHP 4.2.0

2002年4月22日にリリース。register_globals の初期値が Off に変更される。

PHP 4.3.0

2002年12月27日にリリース。コマンドラインインタフェースの実装。

PHP 4.4.0

2005年7月11日にリリース。

2007年7月11日、PHP4のサポートを2007年12月31日をもって終了するという告知がなされた。重大なセキュリティに関する修正のみ、2008年8月8日まで継続され、その後すべてのサポートは終了した。

PHP 5

PHP 5.0.0

2004年7月13日にリリース。擬似的なオブジェクト指向がより一層強化されると共に、クラスライブラリとして SPL がサポートされた。 また、SQLite が標準装備されるようになった。Zend Engine 2.0 導入。

PHP 5.1.0

2005年11月24日にリリース。実行速度の改善、PDO エクステンションが追加される。

PHP 5.2.0

2006年11月2日にリリース。拡張モジュールに Filter(フィルタ)がデフォルトで追加される。

PHP 5.3.0

2009年6月30日にリリース。 以下の機能が追加になった[5]。

PHP 5.4.0

2012年3月1日にリリース。 以下の機能が追加になった[6]。

  • トレイト
  • 配列の短縮構文
  • 関数の返り値を配列として扱えるようになった
  • クロージャが $this を使えるようになった

PHP 5.5.0

2013年6月20日にリリース。 以下の機能が追加になった[7]。

  • ジェネレータ
  • finallyキーワード
  • foreach が list() に対応
  • empty() が任意の式に対応
  • array リテラルと string リテラルのデリファレンス
  • ClassName::class によるクラス名の解決
  • OPcache 拡張モジュールの追加
  • foreach が非スカラーのキーに対応
  • Apache 2.4 ハンドラが Windows に対応
  • GD 拡張モジュールの改良
  • パスワードハッシュ関数(password_get_info、password_hash、password_needs_rehash、password_verify)の追加

PHP 5.6.0

2014年8月28日にリリース。主な新機能は以下の通り[8]。

  • 定数やプロパティで式が使用可能に
  • 可変個引数用の ... 演算子導入
  • 累乗演算子 ** 導入
  • phpdbg の導入

PHP 6

PHP 5.3の次のリリースとなるべく開発されていたバージョン。エンジンの内部処理がUTF-16に置き換えられる計画であったが、多くの問題に見舞われたことから2010年に開発を断念。5.4へと置き換えられた[9]。また5.6の次のバージョンが7とされたことから、欠番となった。

PHP 7.0

2015年12月3日にリリースされた[10]。Zend Engineの改善を行うPHPNG (PHP Next-Gen) プロジェクトの成果を取り入れており、データ構造の改善などにより、前バージョンのPHP 5.6と比べて25%から70%の性能改善が図られている。また言語仕様も大きく拡張されており、引数のタイプヒンティングにスカラー型が指定できるようになる(タイプヒンティングは5.1で導入されたが、クラスや配列など一部の型に限られていた)他、戻り値へのタイプヒンティングも導入されており、前年に発表されたHHVM用プログラミング言語Hackの影響が見受けられるものになっている。[11]

PHP 7.1

2016年12月1日にリリースされた。型指定でスカラー型とNULLを許容するNULL許容型の追加、メソッドの返り値が無いことを示すvoidリターンタイプ、例外処理を書く際に一つのブロックで複数の例外タイプをキャッチするマルチキャッチなど、型を意識したコードを実装しやすくするための拡張が行われている[12]。

Windows版について

Windows環境でApacheと組み合わせる場合、Windows版PHPやApacheの開発環境であるMicrosoft Visual C++のバージョンの関係から、ApacheのモジュールはApache公式サイトではなく、「Apache Lounge」なるサイトにあるものを使うように、PHPの公式サイトに記載されている。

脚注

関連項目

外部リンク


PHP (プログラミング言語)

(PHP: Hypertext Preprocessor から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/08/17 22:29 UTC 版)

PHP
 ウィキデータを編集
PHPのロゴ
パラダイム 命令型プログラミング、関数型プログラミング、オブジェクト指向プログラミング、手続き型プログラミング、リフレクション ウィキデータを編集
登場時期 1995年6月8日 (31年前) (1995-06-08)[1]
開発者 ラスマス・ラードフ、アンディ・ガトマンズ、PHP Group、ゼンド・テクノロジーズ、ゼーブ・スラスキー ウィキデータを編集
最新リリース ウィキデータを編集
安定版
8.5.9[2] / 2026年7月30日 (19日前)
型付け 強い動的型付け
主な処理系 PHP, HHVM, Phalanger
方言 Hack
影響を受けた言語 Perl, C, C++, Java[3], Tcl[1], JavaScript[4]
影響を与えた言語 Hack, JSP, ASP, React JS
プラットフォーム Unix系、Microsoft Windows ウィキデータを編集
ライセンス PHP License、3条項BSDライセンス ウィキデータを編集
ウェブサイト
拡張子 php、phar ウィキデータを編集
テンプレートを表示

PHP(ピー・エイチ・ピー)は、 "The PHP Group" によってコミュニティベースで開発[5]されているオープンソースの汎用プログラミング言語およびその公式の処理系であり、特にサーバーサイドで動的なウェブページを作成するための機能を多く備えていることを特徴とする[6]。 名称の PHP は再帰的頭字語として、 "PHP: Hypertext Preprocessor" を意味[7][8]するとされており、「PHPはHTMLのプリプロセッサである」とPHP自身を再帰的に説明している。

概要

PHPはラスマス・ラードフが個人的にC言語で開発していたCGIプログラムである "Personal Home Page Tools" (短縮されて "PHP Tools" と呼ばれていた)を起源とする[8]。 元々はラードフ自身のWebサイトで簡単な動的Webページを作成するために用いられていたが、その後データベースへのアクセス機能などを追加したPHP Toolsを1995年にGPLの下で公開した[9]。 オープンソースライセンスの下で公開されたことにより同ツールの利用者が増加し、機能の追加を行う開発者たちの貢献もあって、幾度かの大きなバージョンアップを経て今日に至っている。 PHPの再帰的頭字語が PHP: Hypertext Preprocessor となったのはPHP 3からである[8]。

先に述べたように、PHPは動的なWebページを生成するツールを起源としているため、公式の処理系にはWebアプリケーション開発に関する機能が豊富に組み込まれている。 元々PHPはプログラミング言語と言えるものではなく、単にテンプレート的な処理を行うだけであったが、度重なる機能追加やコードの書き直しにより、2017年現在リリースされているPHP 5やPHP 7は目的によらず汎用的に使うことの出来るスクリプト言語となっている。 特にApache HTTP ServerやnginxといったWebサーバーソフトウェアから動作させるスクリプト言語として選択されてサーバーサイドWebアプリケーション開発に利用されることが多い。

プログラミング言語としてのPHPは、C言語やPerl, Javaなどのプログラミング言語に強く影響を受けており、これらの言語に近く学習しやすい文法を有する。 組み込み関数についてもこれらの言語から直接輸入されたものも多く、関数名を変えずにそのまま取り込んだことで標準関数の命名規則が一貫していないといった問題も有している。 またC言語由来のヌル終端文字列とヌル文字を含むことを許容する文字列とが併存し、関数によってどちらを取り扱うかが異なっていたために深刻なセキュリティ上の問題を起こしたこともある[10]。

PHPで書かれたライブラリは、PEARを利用してシステムワイドにインストールしたりユーザ単位で利用することが多かったが、2012年にRubyのパッケージ管理ツールであるRubyGems及び依存関係管理ツールbundler、Node.jsのnpmに影響を受けて開発されたComposerが公開されたことにより、パッケージリポジトリPackagist[11]に登録されたライブラリをプロジェクト単位で利用することが容易になった。

PHP製のWebアプリケーションフレームワークが増加したことにより、それらが提供するロガーやHTTPリクエストハンドラなどといった共通の機能を実装するコードの再利用性を高めるため、2010年頃にフレームワーク開発者などが集まってPHP Standard Groupを立ち上げた[12]。 PHP Standard Groupはその後PHP-FIG (Framework Interoperability Group)に改称し、クラスオートローディングの規格やコーディング規約などの推奨される標準規格、PSR (PHP Standards Recommendations)の策定を行っている[13]。

プログラミング言語としての特徴

処理系としての特徴

  • サーバーサイドWebアプリケーション構築のための豊富な組み込み関数
  • データベースへの容易なアクセス(ベンダーごとの組み込み関数、PDO)
  • PECLによる言語機能の拡張
  • 多くのWebサーバへの組み込みの標準サポート

構文

プログラミング言語としてのPHPはC言語やPerlなどの影響を強く受けており、同じくこれらに影響を受けたRubyやPythonと比較してよりC言語そのままに近い制御構文を有している。 またクラスやインターフェイスといったオブジェクト指向構文はC++よりJavaに近いものが採用されている。 文法の近さによって利用者の多いC言語やJavaからPHPを学んだり、その逆も行いやすいことは言語の学習コストの面からは大きな利点である。

Hello world

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
?>

文字列合成

他のjsやrubyでは下のように(言語はJavaScript)

console.log("Hello " + "world!"); // 結果: Hello world!

と文字列を 「+」 で合成できるが、phpでは

<?php 
   echo 'Hello ' + 'world!'; // 結果: Error
   echo 'Hello ' . 'world!'; // 結果: Hello world!
?>

と、「 . 」のようにドットで合成しなければならない

処理系

プログラミング言語としてのPHPを実行するための The PHP Group による公式な処理系の実装も、プログラミング言語としてのPHPと区別されることなく PHP と呼ばれる。 2014年頃までプログラミング言語としてのPHPには規格などが存在しなかった[14]ため、公式の処理系の実装およびマニュアルの記述がその代わりとなっていた。 2018年1月現在では、作業中となっているが、プログラミング言語としての仕様は処理系の実装と分かれて文書化されている[15]。

この実装は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レイヤを含む。 一部の組み込み関数はプラットフォームごとに挙動が違うため、スクリプトによっては移植作業が必要になる場合がある。

PECLによる拡張

公式の処理系に対して、C言語やC++で記述された拡張ライブラリを提供する PECL (The PHP Extension Community Library) というプロジェクトが存在する。 基本的にPECLのライブラリは標準ではPHPに組み込まれてはいないものが多いが、PECLで開発されていたライブラリがPHPの本体に標準でバンドルされるようになったり(PDO)、逆に非推奨となった機能が本体より取り除かれ、PECLでメンテナンスが継続される(mcrypt[※ 1])こともあり、拡張機能としてはPHPの準標準と言える立ち位置にある。

対応する主要DBMS

PHPは数多くのDBMSを標準でサポートしている。 提供されるAPIは、ベンダ固有モジュールというDBMS毎に提供される専用モジュールによるものと、ベンダ毎の差異を吸収して一貫したインターフェイスで様々なDBMSに接続出来るデータベース抽象化レイヤとがある。 特にデータベースをより高度に抽象化して扱うライブラリなどでは、様々なDBMSに対応するためにPHP5.1で標準になったデータベース抽象化レイヤ PDO をバックエンドとして選択するものが多い。

Webサーバとの統合

PHPをWebサーバで動作させる方法には、実行ファイル形式 (CGI / FastCGI)、モジュール形式(mod_phpなど)がある。 どの方法を利用するか(利用出来るか)はWebサーバにより異なる。 実行ファイル形式によるCGIはほぼ全てのWebサーバに対応しているが、Apacheで動作させる場合はmod_phpとFastCGI、IIS、lighttpdやNginxで動作させる場合はFastCGIが利用可能である。

PHPに標準で実装されているWebサーバ用API (SAPI)の一覧を以下に挙げる。以前はこのほかにも存在したがPHP 7.0で削除された[16]。

とくに、HTTPリクエストの度にプロセスを起動させないインタフェース(Apacheとmod_phpの組み合わせ、またはlighttpdなどのFastCGIに対応したWebサーバ)での動作が高速である。

その他の処理系

PHPの処理系は公式の実装を含めいくつかの異なる実装が存在する。 そのうち比較的よく知られているものについて簡単に記述する。

HHVM (HipHop Virtual Machine) (PHP License, Zend Engine License)
Facebookによって開発された処理系で、実行の高速化のために実行時(JIT)コンパイル方式を採用している。HHVMは実行時にソースコードをHipHopバイトコードと呼ばれる独自の中間言語にコンパイルし、そこから動的に機械語にコンパイル/最適化を経て実行される。ただし、HHVM4.0 以降はPHPから派生した言語であるHack専用となり、PHP自体のサポートは削除された。
Phalanger (Apache License)
プラハ・カレル大学のオープンソースプロジェクトとして開発されている処理系で、PHPのソースコードをCILバイトコードにコンパイルすることにより.NET Framework上で動作させることを可能にしている。

PHPで書かれたソフトウェア

PHPは学習コストの低さ、記述の容易さから多くのアプリケーションが開発されている。 Wikipediaを動作させているアプリケーションであるMediaWikiもPHPによって記述されている。

本節ではPHPで書かれた代表的なアプリケーションを列挙する。

ウェブアプリケーション、CMSなど

ウェブアプリケーション・フレームワーク

テンプレートエンジン


歴史

前史

ラスマス・ラードフは自身のWebページで利用するため、1994年にC言語で書かれたCGI用バイナリ群を作成し、 "Personal Home Page Tools" と命名した。 このCGIソフトウェアは略して "PHP Tools" と呼ばれることが多かったようである。 その後、利用者からの機能要望が増えたため、オリジナルのPHP Toolsは大きく書き直され、データベースを利用することが出来るようになった。 単純なツール群から一種のフレームワークとしての機能を有するようになったのである。 ラードフは1995年6月8日にGPLの下でPHP Toolsを公開、オープンソースソフトウェアとして最初のリリースを行った。

1995年9月、ラードフはPHP Toolsを発展させ、現在のPHPにも受け継がれている特徴、Perl風の変数名やHTMLフォームデータの自動取得、そしてHTMLへの埋め込み型の記述方式などを持ったツール "FI" (Form Interpreter) を実装した。 翌月にはFIを完全に書き直し、 "Personal Home Page Construction Kit" という名前でリリースを行い、C言語やPerlに近い構文を有する簡易スクリプトツールへと発展した。

このツールは再び一から書き直され、ユーザ定義関数のサポートなど、プログラミング言語としての機能を有するようになった。 1996年4月になるとPHPとFIの名称を合わせた "PHP/FI" として公開された。 同年6月に、後にPHP 2として言及される "PHP/FI Version 2.0" のベータ版がリリースされた。 PHP/FI Version 2.0は翌1997年11月に正式版がリリースされ、その後1998年1月に一度アップデートが行われたあとはメンテナンスは行われなかった。

PHP 3

イスラエルのアンディ・ガトマンズとゼーブ・スラスキーは、e-コマースアプリケーションを開発するためにPHP/FI Version 2.0を利用しようと考えていたが、PHP/FIには機能が不足していた。 そこで1997年、彼らはラードフに対してPHP/FIを作り直す方法を検討していることを伝えた。 ガトマンズとスラスキ―はPHP/FIで使われていたパーサを書き直し、ラードフとも協力して新たなプログラミング言語を開発した。 この言語は再び "PHP" と命名されたが、"Personal Home Page Tools"が抱えていた個人用という印象を避けるため、新しく "PHP: Hypertext Preprocessor" という再帰的頭字語を与えられることになった。 1998年6月、ラードフ、ガトマンズそしてスラスキーに加え、世界中の開発者らが立ち上げたPHP Development Teamは "PHP 3.0" をPHP/FI Version 2.0の後継として、GPLとPHP Licenseとのデュアルライセンスの下でリリースした。

PHP 4

PHP 3.0がリリースされて間もなく、ガトマンズとスラスキーはPHPのプログラミング言語を処理するコアの部分の再設計を行い、新しく作り上げた実行エンジンを彼らの名前からとって "Zend Engine" と命名した。 2000年5月、このZend Engineを使用した大幅なパフォーマンスの改善を行い、より多くのWebサーバのサポートなどの機能拡張を行った新しいバージョンである"PHP 4.0"がリリースされた。 PHP 4ではコピーレフト条項がPHPの利用拡散を妨げるという判断[17]により、ライセンスからGPLが外れてPHP LicenseおよびZend EngineのコードについてはZend Engine Licenseが適用されることになった。

PHP 4は4.0から4.4までがリリースされ、2008年8月にセキュリティ対応を含めた全ての開発が終了している。

PHP 5

2004年7月、新たにZend Engine 2をコアとし、オブジェクト指向構文をより一層強化したバージョンである "PHP 5.0" がリリースされた。 マイナーアップデートにより様々な機能の追加が行われ、DBMSへの一貫したアクセスインターフェイスを提供する抽象化レイヤPDOが導入されたり、PHPが欠いていた名前空間、静的遅延束縛、クロージャなどをはじめとしたプログラミング言語としての機能強化が頻繁に取り入れられている。

PHP 5.4では特筆すべき機能として開発用の組み込みWebサーバが導入されており、他のWebサーバを導入しなくともWebアプリケーション開発が容易に行えるようになった。 PHP 5.6では対話式デバッガがSAPIとして組み入れられた。

PHP 5は既に開発が終了しており、最終バージョンであるPHP 5.6のセキュリティ対応も2018年12月31日をもって終了した。

PHP 6

PHP 5.3の次のリリースとなるべく開発されていたバージョンで、エンジンの内部処理がUTF-16に置き換えられる計画であったが、多くの問題に見舞われたことから2010年に開発が断念されている。 PHP 5.3の次のリリースはPHP 5.4へと置き換えられ[18]、また次のPHPのメジャーリリースがPHP 7とされたことでPHP 6は欠番となった。

PHP 7

2015年12月に内部エンジンをZend Engine 3とした"PHP 7.0"がリリースされた[19]。 Zend Engineの改善を行うPHPNG (PHP Next-Gen) プロジェクトの成果を取り入れており、データ構造の改善などにより、前バージョンのPHP 5.6と比べて25%から70%の性能改善が図られている。 また言語仕様も大きく拡張されており、引数のタイプヒンティングにスカラー型が指定できるようになる[20](タイプヒンティングは5.1で導入されたが、クラスや配列など一部の型に限られていた)他、戻り値へのタイプヒンティング[21]も導入されており、前年に発表されたHHVM用プログラミング言語Hackの影響が見受けられるものになっている。[22]

PHP 8

2020年11月に"PHP 8.0"がリリースされた[23]。

リリース履歴

凡例
色 意味 メンテナンスの状況
赤 旧版 メンテナンス終了
黄 安定版 セキュリティ対応のみ
緑 安定版 バグ修正とセキュリティ対応
青 開発版 新機能の追加
Ver. メンテナンスの状況 リリース日時 サポート期限[24][25] 特記事項
アクティブ セキュリティ
1.0 旧版 1995-06-08 正式名称は"Personal Home Page Tools (PHP Tools)". "PHP"という名称が使用された最初のバージョン。[8]
2.0 旧版 1997-11-01 正式名称は"PHP/FI 2.0". 今日まで続くプログラミング言語としてのPHPが成立した最初のバージョン。
3.0 旧版 1998-06-06 2000-10-20[25] このバージョンからコミュニティーベースの開発に移行した。特にアンディ・ガトマンズやゼーブ・スラスキーが基礎となる部分を大幅に書き直した。[8]
4.0 旧版 2000-05-22 2001-06-23[25] Zend Engineを導入し、コードのパース部分と実行部分とが分離された。[26]
4.1 旧版 2001-12-10 2002-03-12[25] スーパーグローバル変数の導入 ($_GET, $_POST, $_SESSION, etc.)[26]
4.2 旧版 2002-04-22 2002-09-06[25] register_globalsが標準で無効化された。これによりセキュリティホールの原因となりがちだった外部入力をチェック無しで直接グローバル変数に格納する処理が行われなくなった。[26]
4.3 旧版 2002-12-27 2005-03-31[25] これまで提供されていたCGI用SAPIに加えてコマンドラインインターフェイス(CLI-SAPI)が導入された。[26][27]
4.4 旧版 2005-07-11 2008-08-07[25] メモリ破損の脆弱性を修正した。これによりバイナリ互換性が崩れ、PHP version 4.3.x向けにビルドされた拡張が使用出来なくなった。[28]
5.0 旧版 2004-07-13 2005-09-05[25] Zend Engine 2の導入とオブジェクト指向構文の刷新。[29]
5.1 旧版 2005-11-24 2006-08-24[25] 大幅なパフォーマンス改善。[29] 一貫したデータベースアクセスインターフェイスを提供するPHP Data Objects (PDO)の導入。[30]
5.2 旧版 2006-11-02 2011-01-06[25] フィルター拡張を標準で有効に。JSONサポートを標準化。[29]
5.3 旧版 2009-06-30 2014-08-14[25] 名前空間のサポート、 静的遅延束縛、goto演算子、クロージャ、PHPアーカイブ (phar)、循環参照に対するガベージコレクション、Windowsサポートの改善、SQLite3、MySQL関数のバックエンドライブラリをlibmysqlからmysqlndに置き換え、MIMEサポートの改善のためmime_magic拡張の代替としてfileinfo拡張を追加、i18n拡張、ereg拡張の非推奨化。
5.4 旧版 2012-03-01 2015-09-03[25] トレイトのサポート、配列の短縮記法の導入。register_globals, safe_mode, allow_call_time_pass_reference, session_register(), session_unregister()および session_is_registered()の削除。ビルトインWebサーバ。[31] 既存の機能に対するいくつかの改善、パフォーマンスの向上とメモリの削減。
5.5 旧版 2013-06-20 2016-07-10[24] ジェネレータおよび例外処理に於けるfinallyブロックの導入、OpCache (Zend Optimizer+に基く)のバンドル。[32]
5.6 旧版 2014-08-28 2017-01-19[24] 2018-12-31[24] 定数式、可変長引数関数、引数の展開演算子(...)、累乗演算子(**)、定数と関数に対するuse文、対話型デバッガphpdbgをSAPIモジュールとしてバンドル、その他細かな改善。[33] mysql_で始まる関数名が非推奨となる。
6.x N/A 破棄 N/A N/A ネイティブUnicodeサポートを含むことを検討されていたが、最終的にリリースされず欠番となった。[34][35]
7.0 旧版 2015-12-03[36] 2017-12-03[24] 2018-12-03[37] Zend Engine 3 (パフォーマンスの改善[38]とWindowsでの64-bit整数サポート[39])、可変変数に対する構文の統一[40]、 ASTに基くコンパイル[41]、Closure::call()の追加[42]、 ビットシフト演算のプラットフォーム依存性の排除[43]、 null合体演算子??[44]、 エスケープシーケンス構文によるUnicodeコードポイント指定[45]、関数の戻り値の宣言構文[21]、スカラー型のタイプヒンティング[20]、 宇宙船演算子<=>[46]、 ジェネレータの委譲[47]、無名クラス[48]、より良い暗号論的擬似乱数生成器[49]、PHPの内部エラーを例外で置き換え[50]、複数の対象をuseする場合の短縮構文[51] バージョン5.5で非推奨となっていたMySQLの拡張機能が削除された。
7.1 旧版 2016-12-01 2018-12-01[24] 2019-12-01[24] iterable型[52]、nullable型[53]、戻り値のvoid型[54]、クラス定数の 可視性の宣言[55]、短縮リスト構文[56]、複数例外のキャッチ[57]
7.2 旧版 2017-11-30 2019-11-30[24] 2020-11-30[24] オブジェクト引数と戻り値の型宣言,[58]、Sodiumがコアモジュールに[59]、抽象メソッドのオーバーライド[60]、パラメータの型の拡大変換[61]、countableでない型のオブジェクトに対するcount()で警告を発生するように[62]
7.3 旧版 2018-12-06 2020-12-06[24] 2021-12-06[24] ヒアドキュメントとNowdoc構文がより柔軟に[63]、リファレンスへの分割代入のサポート[64]、PCRE2のサポート[65]、 hrtime()関数[66]
7.4 旧版 2019-11-28 2021-11-28[24] 2022-11-28[24] アロー関数、型付きプロパティ[67]、OPcacheでの事前ロード[68]、Null合体代入演算子[69]、openssl_random_pseudo_bytes()の改善[70]、弱い参照[71]、FFI – Foreign function interface拡張モジュール[72]、hash拡張モジュールが常に有効に[73]、password_hash()の改善[74]、mb_str_split()の追加[75]、リファレンスへのリフレクション[76]、wddx拡張モジュールがPECLへ移動[77]、カスタムオブジェクトのシリアライズのためのマジックメソッド[78]
8.0 旧版 2020-11-26 2022-11-26[24] 2023-11-26[24] JITコンパイラ[79]、負のインデックスで始まる配列[80]、トレイトでprivateな抽象メソッドを定義可能に[81]、文字列と数値の比較の改善[82]、数値を示す文字列の改善[83]、算術演算子/ビット演算子で演算不能時にTypeErrorをスローするように[84]、PHPエンジンのエラーを再分類[85]、組込関数の一貫した型エラー[86]、非互換なメソッドのシグネチャが致命的なエラーに[87])、float型から文字列型へのキャストがロケール非依存に[88]、多数の構文の調整[89]、アトリビュート[90][91][92][93]、名前付き引数[94]、match式[95]、コンストラクタ引数のプロパティ昇格機能[96]、union型[97]、mixed型[98]、戻り値としてのstatic型[99]、nullsafe演算子[100]、変数に保存せずに例外をキャッチする構文[101]、throw式[102]、JSON拡張モジュールが常に有効に[103]
8.1 旧版 2021-11-25 2023-11-25[24] 2025-12-31[24] 明示的な8進数プレフィックス[104]、列挙型[105]、readonlyプロパティ[106]、第一級callable生成記法[107]、初期化時のnew式の許可[108]、交差型[109]、戻り値のnever型[110]、クラス定数のfinal指定[111]、ファイバー[112]
8.2 安定版 2022-12-08 2024-12-31[24] 2026-12-31[24] Readonlyクラス[113]、null, false, trueが独立した型に[114][115]、大文字小文字変換がロケール非依存に[116]、DNF型[117]、トレイトでの定数[118]
8.3 安定版 2023-11-23 2025-12-31[24] 2027-12-31[24] 型付きクラス定数[119]、クラス定数への動的なアクセス構文[120]、#[\\Override]アトリビュート[121]、readonlyプロパティのclone中の再初期化[122]、json_validate()関数[123]、乱数生成関数[124]、CLIで複数ファイルの文法チェックに対応
8.4 安定版 2024-11-21 2026-12-31[24] 2028-12-31[24] プロパティフック、非対称可視性、アトリビュート、DOM 拡張モジュールの新機能と HTML5サポート、BCMathのオブジェクトAPI
8.5 安定版 2025-11-20 2026-12-31[24] 2029-12-31[24] URI 拡張モジュール、パイプ演算子、clone関数、#[\\NoDiscard] アトリビュート、定数式でのクロージャと第一級 callable、持続的な cURL 共有ハンドル、array_first() ・ array_last() 関数

注釈

出典

  1. 1 2 Lerdorf, Rasmus (2017年4月26日). “PHP on Hormones – history of PHP presentation by Rasmus Lerdorf given at the MySQL Conference in Santa Clara, California”. The Conversations Network. 2013年7月29日時点のオリジナルよりアーカイブ。2009年6月22日閲覧。
  2. ↑ “Release 8.5.9” (2026年7月30日). 2026年7月31日閲覧。
  3. ↑ “PHP: 序文 – Manual”. 2026年1月3日閲覧。
  4. ↑ Stogov, Dmitry [@dstogov] (2015年12月4日). “It's not a secret that some #PHP7 optimization ideas came from HHVM, LuaJIT and V8. Thank you @HipHopVM @SaraMG. #php7thankyou”. X(旧Twitter)より2026年1月3日閲覧.
  5. ↑ “Contributing to PHP”. php.net. 2018年2月2日閲覧。
  6. ↑
    PHP is a popular general-purpose scripting language that is especially suited to web development.

    —The PHP Group,php.net

  7. ↑ “What is PHP”. PHP Manual. php.net. 2018年2月2日閲覧。
  8. 1 2 3 4 5 “History of PHP”. PHP Manual. php.net. 2018年2月2日閲覧。
  9. ↑ Rasmus Lerdorf. “Announce: Personal Home Page Tools (PHP Tools)”. Google Group. 2018年2月2日閲覧。
  10. ↑ packagist.org
  11. ↑ www.php-fig.org
  12. ↑ “PHP Standards Recommendations”. PHP-FIG. 2018年2月2日閲覧。
  13. ↑ Joab Jackson (2014年7月31日). “PHP gets a formal specification, at last”. ITworld. IDG. 2018年2月2日閲覧。
  14. ↑ The PHP Group. “PHP Language Specifications”. GitHub. 2018年2月2日閲覧。
  15. ↑ “PHP: 削除された拡張モジュールおよび SAPI”. PHP Manual. 2020年7月19日閲覧。
  16. ↑ “PHP Licensing”. php.net. 2018年2月2日閲覧。
  17. ↑ “PHP6開発 UTF-16化を断念、5.3へロールバック”. マイナビニュース (2010年3月17日). 2015年5月3日閲覧。
  18. ↑ “PHP 7.0.0 Released”. php.net. 2015年12月4日閲覧。
  19. 1 2 “RFC: Scalar Type Declarations”. php.net (2015年3月16日). 2015年3月17日閲覧。
  20. 1 2 “RFC: Return Types”. php.net (2015年1月27日). 2015年1月28日閲覧。
  21. ↑ “PHP 7 Infographic - 5 things you need to know #php #zend”. Zend Technologies Inc.. 2015年5月3日閲覧。
  22. ↑ “PHP 8.0.0 Released!”. php.net. 2020年11月27日閲覧。
  23. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 “Supported Versions”. php.net. 2018年12月7日閲覧。
  24. 1 2 3 4 5 6 7 8 9 10 11 12 “Unsupported Branches”. php.net. 2015年11月14日閲覧。
  25. 1 2 3 4 “PHP: PHP 4 ChangeLog”. The PHP Group (2008年1月3日). 2008年2月22日閲覧。
  26. ↑ “Using PHP from the command line”. PHP Manual. The PHP Group. 2009年9月11日閲覧。
  27. ↑ “PHP 4.4.0 Release Announcement”. PHP Mannual. The PHP Group. 2013年11月24日閲覧。
  28. 1 2 3 “PHP: PHP 5 ChangeLog”. The PHP Group (2007年11月8日). 2008年2月22日閲覧。
  29. ↑ “PHP manual: PDO”. The PHP Group (2011年11月15日). 2011年11月15日閲覧。
  30. ↑ “Built-in web server”. 2012年3月26日閲覧。
  31. ↑ “PHP 5.5.0 changes”. php.net. 2012年12月3日時点のオリジナルよりアーカイブ。2015年3月3日閲覧。
  32. ↑ “Migrating from PHP 5.5.x to PHP 5.6.x”. php.net. 2014年3月24日閲覧。
  33. ↑ “Resetting PHP 6”. 2018年1月31日閲覧。 “There have been books on the shelves purporting to cover PHP 6 since at least 2008. But, in March 2010, the PHP 6 release is not out - in fact, it is not even close to out. Recent events suggest that PHP 6 will not be released before 2011 - if, indeed, it is released at all.”
  34. ↑ “PHP 7 moves full speed ahead”. 2018年1月31日閲覧。 “Recent versions of PHP have been part of the 5.x release series, but there will be no PHP 6. “We’re going to skip [version] 6 because years ago, we had plans for a 6 but those plans were very different from what we’re doing now,” Gutmans said. Going right to version 7 avoids confusion.”
  35. ↑ “News Archive – 2018: PHP 7.2.5 Released”. php.net (2018年4月26日). 2018年4月28日閲覧。
  36. ↑ “PHP: Release Process” (2011年6月20日). 2018年1月31日閲覧。
  37. ↑ “PHP: phpng”. php.net. 2014年7月15日閲覧。
  38. ↑ “PHP: rfc:size_t_and_int64_next”. php.net. 2014年12月16日閲覧。
  39. ↑ “PHP RFC: Uniform Variable Syntax”. php.net (2014年5月31日). 2014年7月30日閲覧。
  40. ↑ “PHP: rfc:abstract_syntax_tree”. php.net. 2014年12月16日閲覧。
  41. ↑ “PHP: rfc:closure_apply”. php.net. 2014年12月16日閲覧。
  42. ↑ “PHP: rfc:integer_semantics”. php.net. 2014年12月16日閲覧。
  43. ↑ “PHP: rfc:isset_ternary”. php.net. 2014年12月16日閲覧。
  44. ↑ “RFC: Unicode Codepoint Escape Syntax” (2014年11月24日). 2014年12月19日閲覧。
  45. ↑ “Combined Comparison (Spaceship) Operator”. php.net. 2015年5月21日閲覧。
  46. ↑ “PHP RFC: Generator Delegation”. php.net. 2015年5月21日閲覧。
  47. ↑ “PHP RFC: Anonymous Classes”. php.net. 2015年5月21日閲覧。
  48. ↑ “PHP RFC: Easy User-land CSPRNG”. php.net. 2015年5月21日閲覧。
  49. ↑ “PHP RFC: Exceptions in the engine (for PHP 7)”. php.net. 2015年5月21日閲覧。
  50. ↑ “PHP RFC: Group Use Declarations”. php.net. 2015年5月21日閲覧。
  51. ↑ “PHP: rfc:iterable”. php.net (2016年6月10日). 2023年6月30日閲覧。
  52. ↑ “PHP: rfc:nullable_types”. php.net (2014年4月10日). 2023年6月30日閲覧。
  53. ↑ “PHP: rfc:void_return_type”. php.net (2015年11月9日). 2015年11月14日閲覧。
  54. ↑ “PHP: rfc:class_constant_visibility”. php.net (2015年10月27日). 2015年12月8日閲覧。
  55. ↑ “PHP: rfc:short_list_syntax”. php.net (2016年4月7日). 2023年6月30日閲覧。
  56. ↑ “PHP: rfc:multiple-catch”. php.net (2016年3月6日). 2023年6月30日閲覧。
  57. ↑ “PHP: rfc:object-typehint”. wiki.php.net. 2024年1月23日閲覧。
  58. ↑ “PHP: rfc:libsodium”. wiki.php.net. 2024年1月23日閲覧。
  59. ↑ “PHP: rfc:allow-abstract-function-override”. wiki.php.net. 2024年1月23日閲覧。
  60. ↑ “PHP: rfc:parameter-no-type-variance”. wiki.php.net. 2024年1月23日閲覧。
  61. ↑ PHP: News Archive - 2017 30 Nov 2017
  62. ↑ “PHP: rfc:flexible_heredoc_nowdoc_syntaxes”. wiki.php.net. 2024年1月23日閲覧。
  63. ↑ “PHP: rfc:list_reference_assignment”. wiki.php.net. 2024年1月23日閲覧。
  64. ↑ “PHP: rfc:pcre2-migration”. wiki.php.net. 2024年1月23日閲覧。
  65. ↑ “PHP: hrtime – Manual”. php.net. 2024年1月23日閲覧。
  66. ↑ “PHP: rfc:typed_properties_v2”. wiki.php.net. 2019年4月4日閲覧。
  67. ↑ “PHP: rfc:preload”. wiki.php.net. 2019年4月4日閲覧。
  68. ↑ “PHP: rfc:null_coalesce_equal_operator”. wiki.php.net. 2019年4月4日閲覧。
  69. ↑ “PHP: rfc:improve-openssl-random-pseudo-bytes”. wiki.php.net. 2019年4月4日閲覧。
  70. ↑ “PHP: rfc:weakrefs”. wiki.php.net. 2019年4月5日閲覧。
  71. ↑ “PHP: rfc:ffi”. wiki.php.net. 2019年4月5日閲覧。
  72. ↑ “PHP: rfc:permanent_hash_ext”. wiki.php.net. 2019年4月5日閲覧。
  73. ↑ “PHP: rfc:password_registry”. wiki.php.net. 2019年4月5日閲覧。
  74. ↑ “PHP: rfc:mb_str_split”. wiki.php.net. 2019年4月5日閲覧。
  75. ↑ “PHP: rfc:reference_reflection”. wiki.php.net. 2019年4月5日閲覧。
  76. ↑ “PHP: rfc:deprecate-and-remove-ext-wddx”. wiki.php.net. 2019年4月5日閲覧。
  77. ↑ “PHP: rfc:custom_object_serialization”. wiki.php.net. 2019年4月5日閲覧。
  78. ↑ “PHP: rfc:jit”. wiki.php.net. 2019年4月5日閲覧。
  79. ↑ “PHP: rfc:negative_array_index”. wiki.php.net. 2019年4月5日閲覧。
  80. ↑ “PHP RFC: Validation for abstract trait methods”. wiki.php.net. 2020年8月14日閲覧。
  81. ↑ “PHP RFC: Saner string to number comparisons”. wiki.php.net. 2020年8月14日閲覧。
  82. ↑ “PHP RFC: Saner numeric strings”. wiki.php.net. 2020年8月14日閲覧。
  83. ↑ “PHP RFC: Stricter type checks for arithmetic/bitwise operators”. wiki.php.net. 2020年8月14日閲覧。
  84. ↑ “PHP RFC: Reclassifying engine warnings”. wiki.php.net. 2020年8月14日閲覧。
  85. ↑ “PHP: rfc:consistent_type_errors”. wiki.php.net. 2019年4月5日閲覧。
  86. ↑ “PHP: rfc:lsp_errors”. wiki.php.net. 2019年5月26日閲覧。
  87. ↑ “PHP RFC: Locale-independent float to string cast”. wiki.php.net. 2020年8月14日閲覧。
  88. ↑ “PHP RFC: Variable Syntax Tweaks”. wiki.php.net. 2020年8月14日閲覧。
  89. ↑ “PHP RFC: Attributes V2”. wiki.php.net. 2020年8月14日閲覧。
  90. ↑ “PHP RFC: Attribute Amendments”. wiki.php.net. 2020年8月14日閲覧。
  91. ↑ “PHP RFC: Shorter Attribute Syntax”. wiki.php.net. 2020年6月20日閲覧。
  92. ↑ “PHP RFC: Shorter Attribute Syntax Change”. wiki.php.net. 2020年8月14日閲覧。
  93. ↑ “PHP RFC: Named Arguments”. wiki.php.net. 2020年8月14日閲覧。
  94. ↑ “PHP RFC: Match expression v2”. wiki.php.net. 2020年8月14日閲覧。
  95. ↑ “PHP RFC: Constructor Property Promotion”. wiki.php.net. 2020年8月14日閲覧。
  96. ↑ “PHP RFC: Union Types 2.0”. wiki.php.net. 2020年8月14日閲覧。
  97. ↑ “PHP RFC: Mixed Type v2”. wiki.php.net. 2020年8月14日閲覧。
  98. ↑ “PHP RFC: Static return type”. wiki.php.net. 2020年8月14日閲覧。
  99. ↑ “PHP RFC: Nullsafe operator”. wiki.php.net. 2020年8月14日閲覧。
  100. ↑ “PHP RFC: non-capturing catches”. wiki.php.net. 2020年8月14日閲覧。
  101. ↑ “PHP RFC: throw expression”. wiki.php.net. 2020年8月14日閲覧。
  102. ↑ “PHP RFC: Always available JSON extension”. PHP. 2020年10月25日閲覧。
  103. ↑ “PHP RFC: Explicit octal integer literal notation”. wiki.php.net. 2020年11月25日閲覧。
  104. ↑ “PHP RFC: Enumerations”. wiki.php.net. 2021年3月25日閲覧。
  105. ↑ “PHP: rfc:readonly_properties_v2”. wiki.php.net. 2021年11月26日閲覧。
  106. ↑ “PHP: rfc:first_class_callable_syntax”. wiki.php.net. 2021年11月26日閲覧。
  107. ↑ “PHP: rfc:new_in_initializers”. wiki.php.net. 2021年11月26日閲覧。
  108. ↑ “PHP: rfc:pure-intersection-types”. wiki.php.net. 2021年11月26日閲覧。
  109. ↑ “PHP: rfc:noreturn_type”. wiki.php.net. 2021年11月26日閲覧。
  110. ↑ “PHP: rfc:final_class_const”. wiki.php.net. 2021年11月26日閲覧。
  111. ↑ “PHP: rfc:fibers”. wiki.php.net. 2021年11月26日閲覧。
  112. ↑ “PHP: rfc:readonly_classes”. wiki.php.net. 2022年6月16日閲覧。
  113. ↑ “PHP: rfc:null-false-standalone-types”. wiki.php.net. 2022年6月16日閲覧。
  114. ↑ “PHP: rfc:true-type”. wiki.php.net. 2022年6月16日閲覧。
  115. ↑ “PHP: rfc:strtolower-ascii”. wiki.php.net. 2022年6月16日閲覧。
  116. ↑ “PHP: rfc:dnf_types”. wiki.php.net. 2023年2月7日閲覧。
  117. ↑ “PHP: rfc:constants_in_traits”. wiki.php.net. 2023年2月7日閲覧。
  118. ↑ “PHP: rfc:typed_class_constants”. wiki.php.net. 2023年12月17日閲覧。
  119. ↑ “PHP: rfc:dynamic_class_constant_fetch”. wiki.php.net. 2023年12月17日閲覧。
  120. ↑ “PHP: rfc:marking_overriden_methods”. wiki.php.net. 2023年12月17日閲覧。
  121. ↑ “PHP: rfc:readonly_amendments”. wiki.php.net. 2023年12月17日閲覧。
  122. ↑ “PHP: rfc:json_validate”. wiki.php.net. 2023年12月17日閲覧。
  123. ↑ “PHP: rfc:randomizer_additions”. wiki.php.net. 2023年12月17日閲覧。

関連項目

外部リンク



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「PHP: Hypertext Preprocessor」の関連用語

PHP: Hypertext Preprocessorのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



PHP: Hypertext Preprocessorのページの著作権

   
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2026 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【PHP】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのPHP: Hypertext Preprocessor (改訂履歴)、PHP (プログラミング言語) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2026 GRAS Group, Inc.RSS