PHPのオートローディングはis_callable関数でもきちんと働く
PHPのオートローディングで1つ気になることがあったので実験。
/test.php
<?php function __autoload($class) { $path = "classes/{$class}.php"; if (file_exists($path)) { include_once $path; } } var_dump(is_callable('Foo::execute')); var_dump(is_callable(array('Foo', 'execute'));
/classes/Foo.php
<?php class Foo { public static function execute() { echo 'Hello'; } }
この状態でtest.phpを実行。var_dumpでいずれもtrueが出力されることを確認しました。クラス実行時にオートローディングが働くことはわかっていましたが、is_callable関数でも働くかどうか不安だったので試してみたということで。