PHP_(プログラミング言語)
[Wikipedia|▼Menu]
プログラミング言語としてのPHPはCPerlなどの影響を強く受けており、同じくこれらに影響を受けたRubyPythonと比較してより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?>
処理系

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

公式の処理系に対して、CC++で記述された拡張ライブラリを提供する 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 をバックエンドとして選択するものが多い。

Apache Derby

DB2

Informix Dynamic Server

InterBase

Microsoft SQL Server

mSQL

MySQL / MariaDB

ODBC

Oracle Database

PostgreSQL

Sybase Adaptive Server Enterprise

SQLite

Redis

Webサーバとの統合

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

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

CGI / FastCGI

FastCGIについては、php-cgiプログラムとFastCGI Process Manager (FPM)の2種類が用意されている。


Apache HTTP Server

litespeed(英語版)

とくに、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など

IBM WebSphere sMash
[※ 2]

MediaWiki

phpBB

phpMyAdmin

PukiWiki

Serendipity Weblog System[※ 3]

SilverStripe CMS[※ 4]

WordPress

XOOPS

OpenPNE

KinagaCMS

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

CakePHP

CodeIgniter

Cosmos[※ 5]

Ethna[※ 6]


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:128 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef