8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

YYPHPAdvent Calendar 2018

Day 18

ちょっぴり変わった、PHPの歴史

Last updated at Posted at 2018-12-17

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.

  1. プログラミング系の出版社で、本の表紙が動物の木版画になっていることでお馴染みです。

8
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?