PHPPHPのロゴ
パラダイム命令型プログラミング、関数型プログラミング、オブジェクト指向プログラミング、手続き型プログラミング、リフレクション
PHP(処理系)
作者ラスマス・ラードフ
開発元The PHP Group
初版1995年6月8日 (28年前) (1995-06-08)
最新版8.2.14[1] / 2023年12月21日 (4か月前) (2023-12-21)
リポジトリphp-src - GitHub
プログラミング
言語C
対応OSマルチプラットフォーム
サポート状況開発中
種別プログラミング言語処理系
ライセンスPHP License
公式サイトwww.php.net
テンプレートを表示
プログラミング言語>>他のプログラミング言語
PHP(ピー・エイチ・ピー)は、 The PHP Group によってコミュニティベースで開発[2]されているオープンソースの汎用プログラミング言語およびその公式の処理系であり、特にサーバーサイドで動的なウェブページを作成するための機能を多く備えていることを特徴とする[3]。名称の PHP は再帰的頭字語として、 "PHP: Hypertext Preprocessor を意味[4][5]するとされており、「PHPはHTMLのプリプロセッサである」とPHP自身を再帰的に説明している。 PHPはラスマス・ラードフが個人的にCで開発していたCGIプログラムである "Personal Home Page Tools" (短縮されて "PHP Tools と呼ばれていた)を起源とする[5]。元々はラードフ自身のWebサイトで簡単な動的Webページを作成するために用いられていたが、その後データベースへのアクセス機能などを追加したPHP Toolsを1995年にGPLの下で公開した[6]。オープンソースライセンスの下で公開されたことにより同ツールの利用者が増加し、機能の追加を行う開発者たちの貢献もあって、幾度かの大きなバージョンアップを経て今日に至っている。PHPの再帰的頭字語が PHP: Hypertext Preprocessor となったのは2017年現在の文法の基礎が確立したPHP 3から[5]である。 先に述べたように、PHPは動的なWebページを生成するツールを起源としているため、公式の処理系にはWebアプリケーション開発に関する機能が豊富に組み込まれている。元々PHPはプログラミング言語と言えるものではなく、単にテンプレート的な処理を行うだけであったが、度重なる機能追加やコードの書き直しにより、2017年現在リリースされているPHP 5やPHP 7は目的によらず汎用的に使うことの出来るスクリプト言語となっている。特にApache HTTP ServerやnginxといったWebサーバーソフトウェアから動作させるスクリプト言語として選択されてサーバーサイドWebアプリケーション開発に利用されることが多い。 プログラミング言語としてのPHPは、CやPerl, Javaなどのプログラミング言語に強く影響を受けており、これらの言語に近く学習しやすい文法を有する。組み込み関数についてもこれらの言語から直接輸入されたものも多く、関数名を変えずにそのまま取り込んだことで標準関数の命名規則が一貫していないといった問題も有している。またC由来のヌル終端文字列とヌル文字を含むことを許容する文字列とが併存し、関数によってどちらを取り扱うかが異なっていたために深刻なセキュリティ上の問題を起こしたこともある[7]。 PHPで書かれたライブラリは、PEARを利用してシステムワイドにインストールしたりユーザ単位で利用することが多かったが、2012年にRubyのパッケージ管理ツールであるRubyGems及び依存関係管理ツールbundler
概要
PHP製のWebアプリケーションフレームワークが増加したことにより、それらが提供するロガーやHTTPリクエストハンドラなどといった共通の機能を実装するコードの再利用性を高めるため、2010年頃にフレームワーク開発者などが集まってPHP Standard Groupを立ち上げた[9]。PHP Standard Groupはその後PHP-FIG (Framework Interoperability Group)に改称し、クラスオートローディングの規格やコーディング規約などの推奨される標準規格、PSR (PHP Standards Recommendations)の策定を行っている[10]。 プログラミング言語としてのPHPはCやPerlなどの影響を強く受けており、同じくこれらに影響を受けたRubyやPythonと比較してよりCそのままに近い制御構文を有している。
プログラミング言語としての特徴
HTML埋め込み型の構文(Hypertext Preprocessorたる所以)
弱い動的型付け
クラスベースオブジェクト指向のサポート
例外処理 (try, catch, throw) のサポート
処理系としての特徴
サーバーサイドWebアプリケーション構築のための豊富な組み込み関数
データベースへの容易なアクセス(ベンダーごとの組み込み関数、PDO)
PECLによる言語機能の拡張
多くのWebサーバへの組み込みの標準サポート
構文