普段あまり意識していなかったautoloadの仕組み。
フレームワークを使っていないアプリを何とかできないものか。。。と考えてたらよくわからなくなったのでメモを残しておきます。
__autoloadとは
オブジェクトを生成しようと思ったら(もしくはクラス関数を静的にコールしようと思ったら)クラスが未定義であった時にコールされる関数。
通常、受け取った「クラス名」を元に、クラス定義ファイルのインクルードを試みる記述をします。インクルードするファイル名はクラス名から割り出せるようにして置く必要があります。通常はクラス名を含んだファイル名を付けます。
<?php
function __autoload($className) {
include_once $className . '.php';
}
$object = new ClassName;
?>~~~
こんな風に書くとClassNameをinclude_once してないんですがパスが通ったところから$className.phpを探してきてinclude_once してくれるという機能。
すごく便利な気がするのですが、1回しか呼べないってことが問題になります((EC-CUBEだと命名規則がばらばらだし、PEARも使ってるしその他ライブラリも使ってて色々ぐちゃぐちゃ。。。))
そんな時に使うのがspl_autoload_register!(らしい)
<h2>spl_autoload_registerとは</h2>
<blockquote>spl_autoload_register ― 指定した関数を __autoload() の実装として登録する
</blockquote>
~~~
参考http://zenith.sakura.ne.jp/blog/2007/12/-spl-autoload-register.html
ふむむ・・・いまいちこれだけじゃよくわからないので更なる研究が必要そうです
コメント