同じ名前空間にクラスがあるとします。
ディレクトリ:
(フォルダ)a
- a.php
(フォルダ)b
- b.php
- c.php
名前空間を使用__autoload
します。ご覧のとおり、フォルダー内b\b.php
:
<?php
namespace b;
use b as x;
function __autoload($clsName){
$clsName='../'.str_replace('\\', '/', $clsName).'.php';
require_once $clsName;
}
class b{
function __construct(){
print("b file<hr/>");
}
}
$t=new x\c(); // line 13
?>
とフォルダ内b\c.php
:
<?php
namespace b;
class c{
function __construct(){
print("c file<hr/>");
}
}
?>
定義するとき$t=new x\c
、__autoload
呼び出さないでください!私を助けてください :(
エラーメッセージ:
Fatal error: Class 'b\c' not found in C:\xampp\htdocs\project\TEST\b\b.php on line 13