PHPの歴史を振り返ってみると、少し変わった誕生の経緯がありました。
プログラミング言語を作る理由
新しいプログラミング言語が作られる理由としては、以下のようなものが考えられます。
- 特定の分野、あるいは状況で使いやすいような言語を作る
- 既存の言語で不足する点があるので、その改良
一方、PHPの場合は、少し特殊な経緯をたどっています。
PHPの歴史をたどる
オライリー1から出ている「プログラミング PHP」の第2版を開いてみると、PHPの歴史についてもまとめられていました。
1.0
PHP 1.0が発表されたのは1995年6月のことでしたが、なんと、この当時はプログラミング言語ではありませんでした。この時点でのPHPは「Personal Home Page tools」の略で、
- アクセス解析
- SSIの処理
- アクセスカウンタ
- フォーム処理
などを備えた、Webサイト向けのツール群でした。これらはC言語で書かれていて、Cで拡張できるようにもなっていました。本人いわく、「スクリプト言語を作るなどといった考えはまったくなかった」とのことです。
2.0
このように、プログラミング言語ではなく、それを作るつもりもなかったところから動き出したPHPですが、C言語で拡張しようとする人はそうそう現れず、タグ埋め込みについての機能要望が殺到した結果、タグとして条件分岐やループを実装して、結局スクリプト言語へと変貌していくこととなりました。そして、Apacheへの組み込みという形式を取るようになったのも、この頃です。
名残り
このようによく言えば実用本位な形で、悪く言えば付け焼刃的に生まれた結果として、PHPのライブラリ関数はあまり一貫性がないままとなっています。
また、PHP 7ではほぼ全て解消していますが、昔はセキュリティ的にもよろしくない機能があって、「例えば、PHPを避ける」などと過去に言われたこともありました。
- GETやPOSTで来た値の名前の変数を自動生成する、
register_globals
(詳細、PHP 4.2でデフォルト無効化、PHP 5.4で完全廃止)- 攻撃者が自由に好きな名前の変数を作れる、という現代から考えれば危険すぎる機能でした。
- 外部入力の一重引用符などに自動でバックスラッシュを補う、マジッククオート(PHP 5.3で非推奨、PHP 5.4で廃止)
- SQLインジェクション予防のために行われていたのですが、本来ならSQLインジェクションにはDBアクセスで対応すべきで、それ以外の場所には邪魔にしかならない、ということもあって廃止されています。ただ、WordPressでは過去との互換性もあって、同等の処理を自前で行っているままとなっています。
歴史を見ていくと、普段見ているのとは違ったものが見えてくる気がします。The world around you is not what it seems.
-
プログラミング系の出版社で、本の表紙が動物の木版画になっていることでお馴染みです。 ↩