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

※この記事は読者によって投稿されたユーザー投稿です:
  • 編集部の見解や意向と異なる内容の場合があります
  • 編集部は内容について正確性を保証できません
  • 画像が表示されない場合、編集部では対応できません
  • 内容の追加・修正も編集部では対応できません

ヒューマンリソシア株式会社はコラム「クラス/オブジェクト関数編  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/

この記事が役に立ったらシェア!
メルマガの登録はこちら Web担当者に役立つ情報をサクッとゲット!

人気記事トップ10(過去7日間)

今日の用語

ERP
Enterprise Resource Planningの略。「ERP」(企業資 ...→用語集へ

インフォメーション

RSSフィード


Web担を応援して支えてくださっている企業さま [各サービス/製品の紹介はこちらから]