Пространство имен и классы в php - PullRequest
1 голос
/ 28 ноября 2009

Почему я получаю ошибку?класс в том же пространстве имен ..

php 5.3.0

namespace ExampleSystem\Core;
class Test {
    public function __construct() {
        print 'Test ok';
    }
}

// Fatal error: Class 'Test' not found in ...
$class_name = 'Test';
$obj = new $class_name;

// Ok
$class_name = 'ExampleSystem\Core\Test';
$obj = new $class_name;

// Ok
$obj = new Test;

1 Ответ

2 голосов
/ 28 ноября 2009

Я не могу найти главу и стих в руководстве по PHP, но очевидное объяснение состоит в том, что когда вы делаете:

 $obj = new $string

, тогда значение $string не отображается в текущем пространстве имен. Это имеет смысл, если учесть, что $string может быть передано откуда-то еще, где могло действовать другое пространство имен.

...