0

次のように構成されたPHPプロジェクトがあります。

--root
 |--dr1
 |   |---dr2
 |        |--testclass.php
 |--start.php
 |--bootstrap.php

testclass.phpには次のものが含まれています。

 namespace dr1\dr2;

 class testclass { 
     ... 
 }

bootstrap.phpには次のものが含まれています。

define('DIR_SEP', DIRECTORY_SEPARATOR);
define('ROOT', dirname(__FILE__) . DIR_SEP);

function __autoload($class)
{
    $path = ROOT . str_replace('\\', DIR_SEP, $class);
    $file = $path . '.php';
    if( is_file($file) ) require_once($file);
}

spl_autoload_extensions('.php');
spl_autoload_register('__autoload');

start.phpには次のものが含まれています。

$class = 'dr1\dr2\testclass.php';
$obj   = new $class();

start.phpを実行すると、 5行目dr1\dr2\testclass.phpにメッセージが見つからないというメッセージが表示されましstart.phpた。理由がわかりませんでした。誰か助けてくれるだろう。どうもありがとう。

4

2 に答える 2

3

オートローダーは正しいように見えるので、問題は Classnametestclass.phpです。ソースファイルには - がtestclassないだけなので、.php- 変数をそのように調整すると、$class動作するはずです:

$class = 'dr1\dr2\testclass';
$obj   = new $class();
于 2012-12-14T13:11:48.587 に答える
1

クラスにアクセスするには、次のことができます

$class = new testclass();

于 2012-12-14T13:06:32.450 に答える