Skip to content

Instantly share code, notes, and snippets.

@k-holy
Created August 19, 2011 07:51
Show Gist options
  • Save k-holy/1156281 to your computer and use it in GitHub Desktop.
Save k-holy/1156281 to your computer and use it in GitHub Desktop.
PEAR形式のみ対応のautoload実装
<?php
set_include_path(realpath(__DIR__ . '/../lib') . PATH_SEPARATOR .
get_include_path());
// spl_autoload_functions()の挙動:登録前
var_dump(spl_autoload_functions()); // bool(false)
// include_path 前提のPEAR形式クラスの場合、最低これだけでも動く
function autoload($className) {
return @include str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
}
// オートロードスタックに登録
spl_autoload_register('autoload');
// spl_autoload_functions()の挙動:登録後
var_dump(spl_autoload_functions()); // array(1) { [0]=> string(8) "autoload" }
// PEAR形式 include_once 'Holy/Foo/Bar/Baz.php' の代用ならこんなのでも十分
$holy_Example = new Holy_Example();
var_dump(get_class($holy_Example)); // string(12) "Holy_Example"
//$hoge = new Hoge();
// オートロードスタックから解除
spl_autoload_unregister('autoload');
// spl_autoload_functions()の挙動:解除後
var_dump(spl_autoload_functions()); // array(0) { }
?>
@k-holy
Copy link
Author

k-holy commented Aug 23, 2011

spl_autoload_functions()の挙動を確認。
一度も登録されていなければfalse, 一度でも登録されていればunregister後も空の配列が返される。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment