<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wikippe.e-do-match.com/index.php?action=history&amp;feed=atom&amp;title=PHP%3A_Hypertext_Preprocessor</id>
	<title>PHP: Hypertext Preprocessor - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wikippe.e-do-match.com/index.php?action=history&amp;feed=atom&amp;title=PHP%3A_Hypertext_Preprocessor"/>
	<link rel="alternate" type="text/html" href="https://wikippe.e-do-match.com/index.php?title=PHP:_Hypertext_Preprocessor&amp;action=history"/>
	<updated>2026-11-07T05:55:00Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wikippe.e-do-match.com/index.php?title=PHP:_Hypertext_Preprocessor&amp;diff=2659&amp;oldid=prev</id>
		<title>240F:15:AA29:1:20F5:2FBB:9F0F:33F9: フレームワークRisolutoのURLを公式サイトのものに修正</title>
		<link rel="alternate" type="text/html" href="https://wikippe.e-do-match.com/index.php?title=PHP:_Hypertext_Preprocessor&amp;diff=2659&amp;oldid=prev"/>
		<updated>2014-07-12T12:38:31Z</updated>

		<summary type="html">&lt;p&gt;フレームワークRisolutoのURLを公式サイトのものに修正&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox プログラミング言語&lt;br /&gt;
|名前 = PHP&lt;br /&gt;
|ロゴ = [[ファイル:PHP-logo.svg|200px]]&lt;br /&gt;
|設計者 = [[ラスマス・ラードフ]]&lt;br /&gt;
|開発者 = The PHP Group&lt;br /&gt;
|登場時期 = {{start date|1995}}&lt;br /&gt;
|最新リリース = 5.5.10 / {{start date and age|2014|03|06}}&lt;br /&gt;
|プラットフォーム = [[クロスプラットフォーム]]&lt;br /&gt;
|パラダイム = [[命令型プログラミング|命令型]], [[オブジェクト指向プログラミング|オブジェクト指向]]&lt;br /&gt;
|型付け = 強い[[動的型付け]]&lt;br /&gt;
|ライセンス = [[PHP License]]&lt;br /&gt;
|ウェブサイト = [http://www.php.net/ www.php.net]&lt;br /&gt;
|影響を受けた言語 = [[C言語|C]], [[C++]], [[Java]], [[Perl]], [[Tcl/Tk|Tcl]]&lt;br /&gt;
|wikibooks = PHP&lt;br /&gt;
}}&lt;br /&gt;
{{プログラミング言語}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PHP: Hypertext Preprocessor&amp;#039;&amp;#039;&amp;#039;（ピー・エイチ・ピー ハイパーテキスト プリプロセッサー）とは、動的に[[HyperText Markup Language|HTML]]データを生成することによって、動的な[[ウェブページ]]を実現することを主な目的とした[[プログラミング言語]]、およびその[[処理系|言語処理系]]である。一般的には &amp;#039;&amp;#039;&amp;#039;PHP&amp;#039;&amp;#039;&amp;#039; と省略して用いられており、これは「個人的なホームページ」を意味する英語の &amp;quot;{{lang|en|Personal Home Page}}&amp;quot; に由来する&amp;lt;ref&amp;gt;[http://www.php.net/manual/ja/history.php PHP の歴史と関連するプロジェクト] - PHP Manual。&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
PHPは[[サーバーサイド・スクリプト]]言語として利用されており、[[Webサーバ]]上で動作し、Webサーバ上でPHPスクリプトの文書が要求されるたびに、そのPHPスクリプトが実行され、結果を[[ウェブブラウザ]]に対して送信する。平易な文法のため初心者でも習得しやすく、また大規模な開発にも多く用いられている。多くのフレームワークやライブラリが存在し、開発の手助けとなっている。&lt;br /&gt;
&lt;br /&gt;
数多くの[[オープンソース]][[ウェブアプリケーション]]に利用されている一方、しばしば[[脆弱性]]の報告がなされ、過去に深刻な[[セキュリティホール]]が何度か報告されている。&lt;br /&gt;
&lt;br /&gt;
== 特徴 ==&lt;br /&gt;
PHPには以下の特徴を持ち合わせている。&lt;br /&gt;
* Webアプリケーションのサーバーサイド・スクリプトに専門化している。&lt;br /&gt;
* [[C言語]]や[[Java|Java言語]]に似た、平易な文法。&lt;br /&gt;
* データベースへの容易なアクセス（組み込み関数、および、標準ライブラリPDOによる）。&lt;br /&gt;
* [[クラスベース]][[オブジェクト指向]]のサポート。&lt;br /&gt;
* [[例外]]処理 (try, catch, throw) のサポート。&lt;br /&gt;
* 多くのオープンソースのフレームワークやライブラリが利用可能である。&lt;br /&gt;
* ASP, JSPと似たHTML埋め込み型の構文をとる。ただし最近のフレームワークを使った開発では、埋め込み型の構文を使用しないことが多い。&lt;br /&gt;
* 様々な付加機能が[[PEAR]]というオンラインライブラリ集でモジュールとして提供されている。&amp;#039;&amp;#039;&amp;#039;pear&amp;#039;&amp;#039;&amp;#039;コマンドで導入/管理ができる。[[Perl]]でいうところの[[CPAN]]である。&lt;br /&gt;
* [[ウィキ]]構築に用いられるソフトの[[MediaWiki]]（Wikipediaで使われている）や[[Pukiwiki]]を始めとして、数多くの[[オープンソース]][[ウェブアプリケーション]]に利用されている。&lt;br /&gt;
* 処理系本体は、C言語で書かれている。&lt;br /&gt;
&lt;br /&gt;
== 技術構成 ==&lt;br /&gt;
=== スクリプト実行環境 ===&lt;br /&gt;
PHP4以降、[[Zend Engine]]をスクリプト言語を処理するエンジンとして利用している。Zend Engineは、PHP3の開発者によって設立された[[ゼンド・テクノロジーズ|Zend Technologies Ltd.]]により開発された[[オープンソース]]のスクリプト言語エンジンである。Zend Engineは1つのプロセスが1つのインタプリタのコンテキストを持つように設計されていて、単独では[[マルチスレッド]]を用いた処理をサポートしていない。&lt;br /&gt;
&lt;br /&gt;
スクリプト実行環境としてのPHPは、Zend Engineに加え、PHPの組み込み関数の実装、Webサーバや[[標準入出力]]とスクリプティングエンジンの間を仲介するSAPI (Server API) レイヤ、マルチスレッドで動くWebサーバのモジュールとして利用される場合にグローバル変数の[[セマンティクス]]を提供するTSRM (Thread Safe Resource Manager)、プラットフォーム間での入出力機構やAPIの差異を吸収するStreamsレイヤからできている。&lt;br /&gt;
&lt;br /&gt;
しかし、一部の組み込み関数はプラットフォームごとに挙動が違うため、スクリプトによっては移植作業が必要になる場合がある。&lt;br /&gt;
&lt;br /&gt;
=== Webサーバとの統合 ===&lt;br /&gt;
PHPをWebサーバで動作させる方法には、実行ファイル形式 (CGI / [[FastCGI]])、モジュール形式（mod_php / [[ISAPI]] など）がある。どの方法を利用するか（利用できるか）はWebサーバにより異なる。実行ファイル形式によるCGIはほぼ全てのWebサーバに対応しているが、[[Apache HTTP Server|Apache]]で動作させる場合はmod_phpとFastCGI、[[Internet Information Services|IIS]]で動作させる場合はFastCGIとISAPI、[[lighttpd]]で動作させる場合は[[FastCGI]]が使用できる。&lt;br /&gt;
&lt;br /&gt;
このほかにも、PHPに標準で実装されているWebサーバ用[[API]]は多い。以下に一覧を挙げる。&lt;br /&gt;
&lt;br /&gt;
* [[Common Gateway Interface|CGI]] / [[FastCGI]]&lt;br /&gt;
* AOLserver&lt;br /&gt;
* [[Apache HTTP Server]] （バージョン 1.x 用 / 2.x 用）&lt;br /&gt;
* [[Lighttpd]]&lt;br /&gt;
* {{仮リンク|Hiawatha (Webサーバ)|en|Hiawatha (web server)|label=Hiawatha Webserver}}&lt;br /&gt;
* Sun Java System Web Server&lt;br /&gt;
* Roxen WebServer&lt;br /&gt;
* [[TUX web server|Tux]]&lt;br /&gt;
* [[ISAPI]] （[[Internet Information Services|Microsoft Internet Information Services]]等）&lt;br /&gt;
* [[Caudium]]&lt;br /&gt;
* [[Continuity]]&lt;br /&gt;
* [[Pi3Web]]&lt;br /&gt;
* [[thttpd]]&lt;br /&gt;
&lt;br /&gt;
とくに、HTTPリクエストの度にプロセスを起動させないインタフェース（Apacheとmod_phpの組み合わせ、または[[lighttpd]]などの[[FastCGI]]に対応したWebサーバ）での動作が高速である。&lt;br /&gt;
&lt;br /&gt;
== 構文 ==&lt;br /&gt;
多くの構文をC言語、[[Java]]、[[Perl]]などのプログラミング言語から借用しており、動的に生成させるウェブ・ページを速やかに作成できるのが特徴である。&lt;br /&gt;
&lt;br /&gt;
幾つかのサンプルコードとその実行結果を交え、PHPの文書構造を解説する。&lt;br /&gt;
&lt;br /&gt;
=== 基本と制御構造 ===&lt;br /&gt;
PHPは&amp;quot;&amp;lt;?php&amp;quot; と &amp;quot;?&amp;gt;&amp;quot;で囲まれた内部をPHPコードと認識し実行する。それ以外の部分は全てHTMLコードとしてそのまま出力される。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
if ($a) {&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;HTMLコード&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
} else {&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;lt;?php echo &amp;quot;aは偽&amp;quot;; ?&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;?phpと?&amp;gt;で囲まれていない部分を除外した際に、構文通りの構造に文書がなっていればPHPはこれを正しく実行する。出力は以下のようになる（便宜上2通り記す）。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// $aが真の時の出力&lt;br /&gt;
&amp;lt;div&amp;gt;HTMLコード&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// $aが偽の時の出力&lt;br /&gt;
&amp;lt;span&amp;gt;aは偽&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[if文|if]]、else (elseif) は条件評価の制御構造としてよく知られた構文であり、他にもPHPでは[[for文|for]]、[[while文|while]] (do)、[[foreach文|foreach]]、[[switch文]]などの[[制御構造]]がサポートされる。[[break文|break]]、[[Continue文|continue]]等の制御構造文もあるが、ループ式を命名するlabel文構造はない。&lt;br /&gt;
&lt;br /&gt;
記号$は変数であることを示し、続く文字はその名前である。PHPは比較的変数に寛容であり、変数が確保されていない場合は、これをエラーとせずに[[null]]として処理する。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$a = x;&lt;br /&gt;
$$a = y;   // $a==x なので $x = y;と等価&lt;br /&gt;
echo $x;   // yを出力&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== データ型 ====&lt;br /&gt;
PHPは以下の型をサポートする&lt;br /&gt;
* [[スカラー]]型&lt;br /&gt;
** [[文字列]]型 (String)&lt;br /&gt;
** [[整数型]] (Integer) - 整数型で扱える範囲はPHPスクリプトを実行する[[CPU]]に依存する。&lt;br /&gt;
** [[浮動小数点数]]型 (Float)&lt;br /&gt;
** [[ブーリアン型|論理型]] (Boolean)&lt;br /&gt;
* 複合型&lt;br /&gt;
** [[オブジェクト型]] (Object)&lt;br /&gt;
** [[配列]]型 (Array)&lt;br /&gt;
* 特殊型&lt;br /&gt;
** [[リソース]]型 (Resource)&lt;br /&gt;
** [[Null|ヌル]]型 (Null)&lt;br /&gt;
&lt;br /&gt;
==== 配列 ====&lt;br /&gt;
配列の使用法は以下のようになる。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// array関数での生成&lt;br /&gt;
$a = array(&amp;quot;wikipedia&amp;quot;, &amp;quot;mediawiki&amp;quot;, 3 =&amp;gt; &amp;quot;commons&amp;quot;);&lt;br /&gt;
echo $a[0];   # wikipedia&lt;br /&gt;
echo $a[3];   # commons&lt;br /&gt;
&lt;br /&gt;
// 明示的な代入&lt;br /&gt;
$b[0] = &amp;quot;wikipedia&amp;quot;;&lt;br /&gt;
$b[] = &amp;quot;mediawiki&amp;quot;;&lt;br /&gt;
$b[] = &amp;quot;commons&amp;quot;;&lt;br /&gt;
echo $b[2];   # commons&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[グローバル変数]] ====&lt;br /&gt;
PHPで定義されているスーパーグローバル変数を幾つか挙げる。&lt;br /&gt;
; $GLOBALS&lt;br /&gt;
: 全てのグローバル変数を連想配列とする。&lt;br /&gt;
&lt;br /&gt;
括弧とは同義である。過去のバージョンは括弧内のみでしか参照できないが、現在のバージョンでは利用は非推奨となっている。&lt;br /&gt;
; $_SERVER ($HTTP_SERVER_VARS)&lt;br /&gt;
: 実行環境情報&lt;br /&gt;
; $_ENV ($HTTP_ENV_VARS)&lt;br /&gt;
: 環境変数&lt;br /&gt;
; $_POST ($HTTP_POST_VARS)&lt;br /&gt;
: POSTメソッド変数&lt;br /&gt;
; $_GET ($HTTP_GET_VARS)&lt;br /&gt;
: GETメソッド変数&lt;br /&gt;
; $_COOKIE ($HTTP_COOKIE_VARS)&lt;br /&gt;
: COOKIE変数&lt;br /&gt;
&lt;br /&gt;
以下はPHP4.1以降で提供される。&lt;br /&gt;
; $_REQUEST&lt;br /&gt;
: $_GET、$_POST、$_COOKIE、$_FILES、更に[[URI]][[クエリー]]（ロケーション）を連想配列として格納する。&lt;br /&gt;
; $_FILES&lt;br /&gt;
: ファイルアップロード処理変数&lt;br /&gt;
; $_SESSION&lt;br /&gt;
: セッション&lt;br /&gt;
&lt;br /&gt;
全容把握には、var_dump 関数等で参照するとよい。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
var_dump($_SERVER);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== クラスとオブジェクト ===&lt;br /&gt;
[[オブジェクト指向]]のPHPは[[クラス (コンピュータ)|クラス]]とオブジェクトをサポートしている。以下にクラス等オブジェクトの例をあげる。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class abc&lt;br /&gt;
{&lt;br /&gt;
	public $a = null;&lt;br /&gt;
	public function b()&lt;br /&gt;
	{&lt;br /&gt;
		echo &amp;quot;abcクラスbメソッド&amp;quot;, PHP_EOL;&lt;br /&gt;
		return &amp;quot;戻値:abc-&amp;gt;b&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function abc()&lt;br /&gt;
	{&lt;br /&gt;
		echo &amp;quot;abc:コンストラクタ生成&amp;quot;, PHP_EOL;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class def extends abc&lt;br /&gt;
{&lt;br /&gt;
	public function def()&lt;br /&gt;
	{&lt;br /&gt;
		echo &amp;quot;def:コンストラクタ生成 &amp;gt; &amp;quot;;&lt;br /&gt;
		echo &amp;quot;def再定義メソッド(継承):&amp;quot;, parent::b(), PHP_EOL;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function b()&lt;br /&gt;
	{&lt;br /&gt;
		echo &amp;quot;オーバーライドされたbメソッド&amp;quot;, PHP_EOL;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$c = new abc();&lt;br /&gt;
$c-&amp;gt;b();&lt;br /&gt;
$f = new def();&lt;br /&gt;
$f-&amp;gt;b();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
PHPに於ける[[コンストラクタ]]生成の演算子はnewである。extendsでクラスの[[継承 (プログラミング)|継承]]が可能であるが多重継承はサポートされていない。[[メンバ変数]]を宣言し定義する際にはprivate・public・protected（[[アクセス制御|アクセス権]]）を用いる（過去のバージョンでは var が使われていた）。echoは続く[[オブジェクト (プログラミング)|オブジェクト]]を文字列として出力するPHPの文書構造である。&lt;br /&gt;
&lt;br /&gt;
parentは継承された[[メソッド]]が、[[インスタンス]]されオーバーライドされた結果、継承されなかったメソッドを参照出来る。ここでdefクラスに継承されたメソッドはabc-&amp;gt;bメソッドであり、def-&amp;gt;bメソッドにより上書きされている。出力結果は以下の様になる。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
abc:コンストラクタ生成&lt;br /&gt;
abcクラスbメソッド&lt;br /&gt;
def:コンストラクタ生成 &amp;gt; abcクラスbメソッド&lt;br /&gt;
def再定義メソッド(継承):戻値:abc-&amp;gt;b&lt;br /&gt;
オーバーライドされたbメソッド&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== アクセス権 ====&lt;br /&gt;
アクセス権やfinalはPHP 5で導入された概念である（一部除く）。finalはメソッドを[[サブクラス (計算機科学)|子クラス]]でオーバーライドすることを禁止する構造である。&lt;br /&gt;
&lt;br /&gt;
インスタンス化されていないabcクラスのbメソッドを静的に呼び出したい場合、&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// static:&lt;br /&gt;
class abc&lt;br /&gt;
{&lt;br /&gt;
	public static function b()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
とstatic宣言をせねばならない。宣言がない場合、全てpublic（どこからでも参照可）で処理される。&lt;br /&gt;
&lt;br /&gt;
なおvarは互換性のため残されており、publicと等価であるが、PHP5.1.3以前のPHP5はエラーとなる。protectedは親クラス・派生クラス・ないしそれを実装するクラス自身からのアクセスのみを許可し、privateは定義クラス内部のみ参照が可能である。&lt;br /&gt;
&lt;br /&gt;
==== インタフェース（定義部）と抽象化 (abstract) ====&lt;br /&gt;
[[抽象化 (計算機科学)|抽象化]]はPHP 5より導入された概念であり、[[インタフェース (情報技術)#ソフトウェアインタフェース|インタフェース]]は[[Java]]のそれや[[Objective-C]]ので実装されているものである。&lt;br /&gt;
Objective-Cと違い、インタフェースはいまのところこれはコードから定義部と実装部を完全に切り離すものではなく、定義の必要性は無い。&lt;br /&gt;
&lt;br /&gt;
やっていることは[[抽象クラス]]（抽象メソッド）とインタフェースは実質変わらないが、その概念は異なる。&lt;br /&gt;
&lt;br /&gt;
インターフェースはその処理内容を定義せずに定義されるが、抽象クラス（抽象メソッド）は実装部の具体的な処理のコードと共に定義されている。&lt;br /&gt;
&lt;br /&gt;
===== インタフェースの実装 =====&lt;br /&gt;
まず最初に具体的なソースコードを示す。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
interface classTemplates&lt;br /&gt;
{&lt;br /&gt;
	public function methodAlpha($arg1, $arg2);&lt;br /&gt;
	public function methodBeta($arg1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class appTemplate implements classTemplates&lt;br /&gt;
{&lt;br /&gt;
	public function methodAlpha($arg1, $arg2)&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
	public function methodBeta($arg1)&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
interface接頭辞をつけテンプレートを定義し、implementsをつけクラスに適用し実装する。テンプレートはextends で継承可能である。&lt;br /&gt;
テンプレートは定義されていても必ず適用されるクラスが必要なわけではない。ただし、適用する前に定義されている必要がある。&lt;br /&gt;
&lt;br /&gt;
いまのところ、定義できるのメンバはpublic（公開可視性）のあるメソッドだけである。&lt;br /&gt;
&lt;br /&gt;
適用されたクラスに定義されたメソッドの「アクセス権・引数」が異なればエラーを引き起こし、またクラスの名前と同じinterfaceは定義できない。&lt;br /&gt;
&lt;br /&gt;
====== インタフェースの継承 ======&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
interface classTemplatesModel&lt;br /&gt;
{&lt;br /&gt;
	public function methodAlpha($arg1, $arg2);&lt;br /&gt;
	public function methodBeta($arg1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface classTemplates extends classTemplatesModel&lt;br /&gt;
{&lt;br /&gt;
	public function methodGamma();&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== interfaceの多重継承について ======&lt;br /&gt;
interfaceは多重継承が可能である。複数のinterfaceを実装するにはimplementsにコンマ区切りでinterface名を書く。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
interface classTemplatesModel&lt;br /&gt;
{&lt;br /&gt;
	public function methodAlpha($arg1, $arg2);&lt;br /&gt;
	public function methodBeta($arg1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface classTemplates&lt;br /&gt;
{&lt;br /&gt;
	public function methodGamma();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class appTemplate implements classTemplates, classTemplatesModel&lt;br /&gt;
{&lt;br /&gt;
	public function methodAlpha($arg1, $arg2)&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
	public function methodBeta($arg1)&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
	public function methodGamma()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 抽象クラスの定義 =====&lt;br /&gt;
クラス名にfinalと同じ様に接頭辞としてabstractをつければ、それは抽象クラスとなる。&lt;br /&gt;
&lt;br /&gt;
メソッドにつければ、それは必ず継承したクラスで実装されねばならない（引数は同じである必要がある）。具体的なソースを示す。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
abstract class Alpha&lt;br /&gt;
{&lt;br /&gt;
	abstract public function methodAlpha($arg1, $arg2);&lt;br /&gt;
&lt;br /&gt;
	protected function methodBeta($arg1)&lt;br /&gt;
	{&lt;br /&gt;
		echo &amp;quot;Alpha クラスで実装されたmathodBeta メソッド¥n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public function __destruct()&lt;br /&gt;
	{&lt;br /&gt;
		echo &amp;quot;インスタンスを破棄、メモリを開放[Alpha::destruct]¥n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class Beta extends Alpha&lt;br /&gt;
{&lt;br /&gt;
	public function __construct()&lt;br /&gt;
	{&lt;br /&gt;
		$this-&amp;gt;methodAlpha(&amp;quot;&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
		$this-&amp;gt;methodBeta(&amp;quot;&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public function methodAlpha($arg1, $arg2)&lt;br /&gt;
	{&lt;br /&gt;
		echo &amp;quot;Beta クラスで実装されたmethodAlpha メソッド¥n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
new Beta();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
__construct() は PHP 5からインスタンス生成の時に自動的に呼び出される[[コンストラクタ]]（__destruct()、[[デストラクタ]]も実装された）。&lt;br /&gt;
&lt;br /&gt;
protected（保護可視性）は、継承されたクラス・または内部（$this、parentなど）でないと、使えないようにする宣言である。&lt;br /&gt;
&lt;br /&gt;
抽象化されたクラスはインスタンスを生成出来ない。よって new Alpha(); とすることは出来ない。また、抽象化されたメソッドは継承しないと使用することは出来ない。&lt;br /&gt;
&lt;br /&gt;
====== 実行結果 ======&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Beta クラスで実装された methodAlpha メソッド&lt;br /&gt;
Alpha クラスで実装された methodBeta メソッド&lt;br /&gt;
インスタンスを破棄、メモリを開放 [Alpha::destruct]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PDO ===&lt;br /&gt;
{{main|PHP Data Object}}&lt;br /&gt;
[[MySQL]]や[[PostgreSQL]]など主要な[[リレーショナルデータベースマネージメントシステム|RDBMS]]への接続については、それぞれ専用の関数ライブラリが用意されている。phpinfo()を表示させれば、そのPHPバージョンにおけるインプリメント状況を確認できる。関数の仕様については微妙な差があり、異なるRDBMSへの移行には支障となる。そのリスクを軽減するのがPDO (PHP Data Object) と呼ばれる、共通する機能はなるべく同じインタフェースで実現しようというアイデアによる、抽象化ライブラリである。ただし文字列処理関数などSQLごとに存在している差異までカバーしているわけではなく、移行に際してはそれなりの注意が必要である。いくらか楽になるという程度の認識で、過信は禁物といえよう。RDBMSごとに、pdo_から始まる名称のドライバモジュールが提供されているが、最近のPHP5.2.5などドライバモジュールが見当たらなくても、標準で組み込まれているケースがある。&lt;br /&gt;
&lt;br /&gt;
=== その他 ===&lt;br /&gt;
include、require等の演算子で外部ファイルに記述されたPHPコードを追加ないし、参照、実行が可能である。returnは戻り値を返す文書構造である。return()とすることで戻り値を評価することも可能である。&lt;br /&gt;
&lt;br /&gt;
[[Unix]][[命令 (コンピュータ)|コマンド]]を実行可能であるが、[[Common Gateway Interface|CGI]]より実行権限は低くなっている。また一部関数はこのUnixコマンドを参照するため、[[Microsoft Windows|Windows系OS]]では使用できない関数がある。コマンドを参照する関数を使用する際は、サーバの設定でパスが通っている必要がある。&lt;br /&gt;
&lt;br /&gt;
幾つもの拡張により扱える関数は環境に依りまちまちである。詳しくは[[#外部リンク|外部リンク]]のリファレンスを参照されたい。&lt;br /&gt;
&lt;br /&gt;
== 代表的なソフトウェア ==&lt;br /&gt;
=== ウェブアプリケーション、CMSなど ===&lt;br /&gt;
{{Col-begin}}&lt;br /&gt;
{{Col-2}}&lt;br /&gt;
* [http://www.ibm.com/software/jp/websphere/smash/ IBM WebSphere sMash]&lt;br /&gt;
* [[MediaWiki]]&lt;br /&gt;
* [[phpBB]]&lt;br /&gt;
* [[phpMyAdmin]]&lt;br /&gt;
* [[PukiWiki]]&lt;br /&gt;
{{Col-2}}&lt;br /&gt;
* [http://s9y.org/ Serendipity Weblog System]&lt;br /&gt;
* [http://silverstripe.org/ SilverStripe CMS]&lt;br /&gt;
* [[WordPress]]&lt;br /&gt;
* [[XOOPS]]&lt;br /&gt;
* [[OpenPNE]]&lt;br /&gt;
{{Col-end}}&lt;br /&gt;
&lt;br /&gt;
=== ウェブアプリケーション・フレームワーク ===&lt;br /&gt;
{{Col-begin}}&lt;br /&gt;
{{Col-2}}&lt;br /&gt;
* [[CakePHP]]&lt;br /&gt;
* [[CodeIgniter]]&lt;br /&gt;
* [https://cwf.codeplex.com/ Cosmos]&lt;br /&gt;
* [http://ethna.jp/ Ethna]&lt;br /&gt;
* [http://ez.no/index.php/products/ez_components eZ components]&lt;br /&gt;
* [[FuelPHP]]&lt;br /&gt;
* [http://kohanaframework.org/ Kohana]&lt;br /&gt;
* [[Laravel]]&lt;br /&gt;
* [http://lithify.me/ Lithium]&lt;br /&gt;
* [http://kunit.jp/maple/ Maple]&lt;br /&gt;
* [http://mojavi.org/ Mojavi]&lt;br /&gt;
* [http://lss.infosys.soft.iwate-pu.ac.jp/~yano/omusuvi/ Omusuvi]&lt;br /&gt;
* [http://peewee.rasign.jp Peewee]&lt;br /&gt;
* [http://phpontrax.com/ PHP on TRAX]&lt;br /&gt;
{{Col-2}}&lt;br /&gt;
* [[PRADO (フレームワーク)|PRADO]]&lt;br /&gt;
* [http://www.risoluto.org/ Risoluto]&lt;br /&gt;
* [http://sabel.php-framework.org/ Sabel]&lt;br /&gt;
* [http://seagull.phpkitchen.com/ Seagull]&lt;br /&gt;
* [http://www.seasar.org/#seasar.php Seasar.PHP]&lt;br /&gt;
* [[Symfony]]&lt;br /&gt;
* [http://www.phpwact.org/ WACT]&lt;br /&gt;
* [http://www.xframeworkpx.com/ xFramework]&lt;br /&gt;
* [[Yii]]&lt;br /&gt;
* [[Zend Framework]]&lt;br /&gt;
* [http://zoopframework.com/ Zoop]&lt;br /&gt;
* [http://php.cheetan.net/ ちいたん]&lt;br /&gt;
* [http://chimpanzee-php.com/ Chimpanzee]&lt;br /&gt;
* [http://fekephp.com/ FekePHP]&lt;br /&gt;
{{Col-end}}&lt;br /&gt;
&lt;br /&gt;
== 対応する主要DBMS ==&lt;br /&gt;
{{Col-begin}}&lt;br /&gt;
{{Col-2}}&lt;br /&gt;
* [[Apache Derby]]&lt;br /&gt;
* [[DB2]]&lt;br /&gt;
* [[Informix Dynamic Server]]&lt;br /&gt;
* [[InterBase]]&lt;br /&gt;
* [[Microsoft SQL Server]]&lt;br /&gt;
* [[mSQL]]&lt;br /&gt;
{{Col-2}}&lt;br /&gt;
* [[MySQL]]&lt;br /&gt;
* [[Open Database Connectivity|ODBC]]&lt;br /&gt;
* [[Oracle Database]]&lt;br /&gt;
* [[PostgreSQL]]&lt;br /&gt;
* [[Adaptive Server Enterprise|Sybase Adaptive Server Enterprise]]&lt;br /&gt;
* [[SQLite]]&lt;br /&gt;
{{Col-end}}&lt;br /&gt;
&lt;br /&gt;
== 歴史 ==&lt;br /&gt;
=== PHP 1.0 ===&lt;br /&gt;
[[1995年]]6月8日にリリース。[[ラスマス・ラードフ]]が開発。初期は [[Perl]] でかかれたスクリプトだったが、その後C言語で書き直され、PHP (Personal Home Page Tools) となる。&lt;br /&gt;
&lt;br /&gt;
=== PHP Version 2 (PHP/FI) ===&lt;br /&gt;
[[1996年]]4月16日にリリース。 FI（Form Interpreter、[[SQL]]による[[データベースマネージメントシステム|DBMS]]ツール）が統合され、[[1997年]]に PHP/FI2.0 となる。フルスペルは「Personal Home Page Construction Kit/Form Interpreter」。&lt;br /&gt;
&lt;br /&gt;
=== PHP 3.0 ===&lt;br /&gt;
[[1998年]]6月6日にリリース。 PHP/FI を元に、[[アンディ・ガトマンズ]]と[[ゼーブ・スラスキー]]によって PHP3 (PHP: Hypertext Preprocessor) が再度書き直された。&lt;br /&gt;
&lt;br /&gt;
=== PHP 4.0.0 ===&lt;br /&gt;
[[2000年]]5月22日にリリース。PHP3 を大幅に機能拡張。Zend Engine 導入。&lt;br /&gt;
&lt;br /&gt;
=== PHP 4.1.0 ===&lt;br /&gt;
[[2001年]]12月10日にリリース。スーパーグローバルが追加される。&lt;br /&gt;
&lt;br /&gt;
=== PHP 4.2.0 ===&lt;br /&gt;
[[2002年]]4月22日にリリース。register_globals の初期値が Off に変更される。&lt;br /&gt;
&lt;br /&gt;
=== PHP 4.3.0 ===&lt;br /&gt;
[[2002年]]12月27日にリリース。コマンドラインインタフェースの実装。&lt;br /&gt;
&lt;br /&gt;
=== PHP 4.4.0 ===&lt;br /&gt;
[[2005年]]7月11日にリリース。&lt;br /&gt;
&lt;br /&gt;
[[2007年]]7月11日、PHP4のサポートを2007年[[12月31日]]をもって終了するという告知がなされた。重大なセキュリティに関する修正のみ、[[2008年]]8月8日まで継続され、その後すべてのサポートは終了した。&lt;br /&gt;
&lt;br /&gt;
=== PHP 5.0.0 ===&lt;br /&gt;
[[2004年]]7月13日にリリース。擬似的な[[オブジェクト指向]]がより一層強化されると共に、クラスライブラリとして [[Standard PHP Library|SPL]] がサポートされた。&lt;br /&gt;
また、[[SQLite]] が標準装備されるようになった。Zend Engine 2.0 導入。&lt;br /&gt;
&lt;br /&gt;
=== PHP 5.1.0 ===&lt;br /&gt;
[[2005年]]11月24日にリリース。実行速度の改善、PDO エクステンションが追加される。&lt;br /&gt;
&lt;br /&gt;
=== PHP 5.2.0 ===&lt;br /&gt;
[[2006年]]11月2日にリリース。拡張モジュールに Filter（フィルタ）がデフォルトで追加される。&lt;br /&gt;
&lt;br /&gt;
=== PHP 5.3.0 ===&lt;br /&gt;
[[2009年]]6月30日にリリース。&lt;br /&gt;
以下の機能が追加になった&amp;lt;ref&amp;gt;[http://www.php.net/manual/ja/migration53.php PHP: PHP 5.2.x から PHP 5.3.x への移行 - Manual]&amp;lt;/ref&amp;gt;。&lt;br /&gt;
*[[名前空間]]&lt;br /&gt;
*遅延静的束縛&lt;br /&gt;
*[[goto文|goto]]&amp;lt;!--演算子です--&amp;gt;&lt;br /&gt;
*[[クロージャ]]&lt;br /&gt;
*[[ガベージコレクション]]&lt;br /&gt;
&lt;br /&gt;
=== PHP 5.4.0 ===&lt;br /&gt;
[[2012年]]3月1日にリリース。&lt;br /&gt;
以下の機能が追加になった&amp;lt;ref&amp;gt;[http://php.net/manual/ja/migration54.php PHP 5.3.x から PHP 5.4.x への移行 - Manual]&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* [[トレイト]]&lt;br /&gt;
* 配列の短縮構文&lt;br /&gt;
* 関数の返り値を配列として扱えるようになった&lt;br /&gt;
* クロージャが $this を使えるようになった&lt;br /&gt;
&lt;br /&gt;
=== PHP 5.5.0 ===&lt;br /&gt;
[[2013年]]6月20日にリリース。&lt;br /&gt;
以下の機能が追加になった&amp;lt;ref&amp;gt;[http://php.net/manual/ja/migration55.php PHP 5.4.x から PHP 5.5.x への移行 - Manual]&amp;lt;/ref&amp;gt;。&lt;br /&gt;
*[[ジェネレータ_(プログラミング)|ジェネレータ]]&lt;br /&gt;
*finallyキーワード&lt;br /&gt;
*foreach が list() に対応&lt;br /&gt;
*empty() が任意の式に対応&lt;br /&gt;
*array リテラルと string リテラルのデリファレンス&lt;br /&gt;
*ClassName::class によるクラス名の解決&lt;br /&gt;
*OPcache 拡張モジュールの追加&lt;br /&gt;
*foreach が非スカラーのキーに対応&lt;br /&gt;
*Apache 2.4 ハンドラが Windows に対応&lt;br /&gt;
*GD 拡張モジュールの改良&lt;br /&gt;
&lt;br /&gt;
== Windows版について ==&lt;br /&gt;
[[Microsoft Windows|Windows]]環境で[[Apache HTTP Server|Apache]]と組み合わせる場合、Windows版PHPやApacheの開発環境である[[Microsoft Visual C++]]のバージョンの関係から、ApacheのモジュールはApache公式サイトではなく、「[http://www.apachelounge.com/ Apache Lounge]」なるサイトにあるものを使うように、[http://windows.php.net/download/ PHPの公式サイト]に記載されている。&lt;br /&gt;
&lt;br /&gt;
== 脚注 ==&lt;br /&gt;
{{Reflist|2}}&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
{{Portal|FLOSS}}&lt;br /&gt;
{{Wikibooks|PHP}}&lt;br /&gt;
* [[Perl]]&lt;br /&gt;
* [[Java]]&lt;br /&gt;
* [[スクリプト言語]]&lt;br /&gt;
* [[オブジェクト指向プログラミング]]&lt;br /&gt;
&lt;br /&gt;
== 外部リンク ==&lt;br /&gt;
* [http://www.php.net/ PHP公式サイト] {{Ref-en}}&lt;br /&gt;
** [http://jp2.php.net/manual/ja/ 日本語マニュアル]&amp;lt;!-- 負荷分散用のミラーサイト --&amp;gt;&lt;br /&gt;
* [http://www.php.gr.jp/ 日本PHPユーザー会]&lt;br /&gt;
&lt;br /&gt;
{{PHP}}&lt;br /&gt;
{{FOSS}}&lt;br /&gt;
{{Web interfaces}}&lt;br /&gt;
&lt;br /&gt;
[[Category:スクリプト言語]]&lt;br /&gt;
[[Category:オープンソース]]&lt;br /&gt;
[[Category:Webサーバ]]&lt;br /&gt;
[[Category:PHP|*PHP Hypertext Preprocessor]]&lt;br /&gt;
[[Category:テンプレートエンジン]]&lt;br /&gt;
&lt;br /&gt;
{{Link GA|en}}&lt;/div&gt;</summary>
		<author><name>240F:15:AA29:1:20F5:2FBB:9F0F:33F9</name></author>
	</entry>
</feed>