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 回答