クラス/オブジェクト関数編  is_a()関数 とis_subclass_of() 関数で注意すべきポイント

ヒューマンリソシア

2015年8月31日 18:36

※この記事は読者によって投稿されたユーザー投稿のため、編集部の見解や意向と異なる場合があります。 また、編集部はこの内容について正確性を保証できません。
ヒューマンリソシア株式会社はコラム「クラス/オブジェクト関数編  is_a()関数 とis_subclass_of() 関数で注意すべきポイント」を公開しました。 さて前回の続きです。 PHPマニュアルのis_a()関数の変更履歴をみると、ちょっと気になる事が書いてあります。 端的に要約しますと「一端、5.0.0で非推奨となり、その後5.3.0で非推奨ではなくなった」という経緯が見て取れます。 解除されたとはいえ、一端「非推奨になる」というのはそれなりに理由があるわけなのですが、 果たして何があったのでしょうか? 正確なところは、Zend社にインタビューなりをして…という流れになると思うのですが。 ここで1つ、気になり、かつ重要なところで「CVE-2011-3379」の脆弱性があります。 autoloadのお話を詳しく、はまたいずれ行いますが、まずここで簡単におさらいをしながら、 どんな脆弱性であるか、を確認していきましょう。 autoload(クラスのオートローディング)の機能は、物凄く簡単に書きますと「各スクリプト(プログラム)の先頭でincludeやrequireを書かなくても、未定義のクラス/インターフェイスを使用しようとした時に 自動的にファイルをincludeしたりrequireしたりしてくれる機能」となります。 __autoload() 関数や spl_autoload_register() 関数によって、独自の処理を定義することも可能です。 実際の所、昨今の「実務で用いられる程度に」複雑なプログラムでは、多くのクラス(ファイル)を必要とします。 そのために、結構大量のrequireを書く必要があることも多く、これが結構な作業上の圧迫となります。 また「なにをrequireしてなにをreqireしていないか」を考えるのが面倒で「全てのファイルをreqireする」といった無駄Tips(大変残念なことに、現存します)が生まれたりする事も少なくないのが現状です。 それ以外にも「autoloadとrequire_onceとの性能比較」で、多くの場合に「autoloadが性能がよい」というのもまた、見逃せないポイントです。 この続きは以下をご覧くださいhttp://resocia.jp/column/740/
この記事のキーワード

人気記事トップ10

人気記事ランキングをもっと見る