プログラミング言語マスターへの道


PHPって何?

PHPという言葉を耳にしたことはありますか?PHPとは一体何なのでしょうか?PHPは「PHP Hypertext Preprocessor」の略で、 C言語やJAVA、Perlなどと同じプログラミング言語およびその言語処理系の事です。動的にWebページを生成するWebサーバの拡張機能の一つで、そこで使われるスクリプト言語です。レイアウトの「雛形」となるHTMLファイル内に、処理内容を記述したスクリプトを埋め込み、処理結果に応じて動的に文書を生成し、送出することができるのです。「PHP Hypertext Preprocessor」は「個人的なホームページ」を意味する英語の「Personal Home Page」から来ているといわれています。

近年のPHP

アドレスの最後が「.html」や「.htm」ではなく「.php」で終わるようなサイトを見たことはないでしょうか?それらはPHP言語を利用して作られたWebサイトです。正式名称の「PHP: Hypertext Preprocessor」にもあるように、動的に生成されるページの作成に向いています。また、XMLのサポートや各種データベースとの連携に優れている点などから近年普及しつつあります。

PHPの表記法法

PHPのプログラムの表記法はC言語、Java、Perlの各言語から転用したものがベースとなっていますが、PHP独自のものもあります。言語仕様やプログラムはオープンソースソフトウェアとして無償で入手することができます。

PHPの使われ方は?

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

PHPとHTMLの違いは?

掲示板やブログ、またはSNSといったWebサービスは、様々な人がリアルタイムで情報を更新する仕組みが備わっています。ところがHTML単体では、ページの内容を逐一変化させることはできません。
そこで登場したのがCGIなどの、逐一変化する情報に対応できるプログラミング言語を用いた仕組みです。PHPも、静的なHTMLページにプログラムを埋め込み、動的なWebページを作成するのために開発されたプログラミング言語です。個人でホームページを作成する際にも、全てをHTMLで作るよりもPHPを利用した方が作業効率が大幅にアップしますし、出来る事が無限大に広がります。

PHPの問題点はあるの?

数多くのオープンソースウェブアプリケーションに利用されている一方、しばしば何らかの攻撃に悪用される可能性のある欠陥や、仕様上の問題点の報告があります。過去に深刻なセキュリティホールが何度か報告されているという問題点があります。

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

PHPを使うとどんな事ができるの?

BBSやブログ、検索システムはもちろん、企業で社員同士の連絡用に使うグループウェアや列車・ホテルなどの予約システム、ネットショッピングなど、あらゆるWebサービスをPHPを利用して作成することができます。
もちろんPHP以外のプログラミング言語も多くのWebサイトで利用されてきましたが、PHPがWebでの使用頻度が最も高いといわれています。
個人でホームページを作成する際にも、全てをHTMLで作るよりもPHPを利用した方が作業効率が大幅にアップしますし、できる事が無限大に広がります。他のプログラミング言語とは違って、PHPなら驚くほど簡単に掲示板や自分だけのブログが作れてしまうのです。

PHPを用いる利点って?

PHPは動的なWebページを生成することを目的として作成されたWebプログラミング言語で、HTMLに組み込む形で処理内容を記述することが出来る柔軟性が特徴です。この柔軟性と充実したエラー解析・出力の機能を備えたことにより、これまでの動的Webページ作成過程に比べて、デバッグ性が大きく向上しています。
また、システム的な面からは、かつて動的Webページ生成に使用されてきたCGIと異なり、Webサーバのモジュールとして動作することが一般的(CGIとして動作するバージョンのPHPも存在します)で、プログラム呼び出しのたびにプロセスを起動しなくてはならないというCGIのデメリットを克服しています。
また、そういった点以外にも、豊富な拡張プラグインや充実したライブラリなどの存在が、Webプログラミングの効率を大きく向上させてくれます。

スクリプト実行環境

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レイヤからできています。
しかし、一部の組み込み関数はプラットフォームごとに挙動が違うため、スクリプトによっては移植作業が必要になる場合があります。

PHP構文

多くの構文をC言語、Java、Perlなどのプログラミング言語から借用していて、動的に生成させるウェブ・ページを速やかに作成できるのが特徴です。

PHP演算子

PHPに於けるコンストラクタ生成の演算子はnewでした。extendsでクラスの継承が可能でありますが、多重継承はサポートされていません。メンバ変数を宣言し定義する際にはprivate・public・protected(アクセス権)を用います(過去のバージョンでは var が使われていました)。echoは続くオブジェクトを文字列として出力するPHPの文書構造です。

アクセス権

アクセス権やfinalは一部を除き、PHP5で導入された概念です。finalはメソッドを子クラスでオーバーライドすることを禁止する構造となっています。