旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

[PHP] requireやinclude周りを復習

2010年7月17日

PHPのファイルインクルード周りが気になったので復習したという話です。
ブログ更新コストを抑えるために超雑更新モードで!

requireとincludeの違い

読み込み失敗時に処理が止まる = require
読み込み失敗時に処理を継続 = include

もう少し詳しく説明すると
読み込み失敗時に Fatal Error (E_ERROR) を発生 = require
読み込み失敗時に Warning (E_WARNING) を発生 = include

参考) PHPマニュアル – include()

require_onceの同一ファイル判定

説明はいらんと思うので、以下が確認した点

  • 途中のファイルパスの記述方法が異なっても、同じファイルを指していたら、同じファイルと判定(当たり前だけど)
  • ファイル名の違うシンボリックリンクも、同じファイルと判定

後者は知らなかった。Linuxに詳しい人なら当然のことなのかもだけど。

include path

一点だけ↓

「パス (絶対パスあるいは相対パスのいずれでも)
を指定した場合は include_path は無視されます。」

引用) PHPマニュアル – include()

何となく知ってたけど、ちゃんと意識したことは無かったので、
近い将来にハマってた気がする。

__autoload

クラス未定義エラーの直前をフックできる関数が __autoload です。
賢明なる諸君には詳しい説明も要らないと思うので、所感だけ↓

  • 一応 function でもやってみたけど無理
  • 個人的感想としては、使えるし黒魔法にもなりにくいので、割とオススメ
  • 詳しく知りたい人は「PHP __autoload」とかでググるといいんだぜ

以上

「置くだけで使えるよ!」というPHPの長所を活かすためには、
とても大事な点なので復習しました。