@Dubrovin

Как создать класс вне namespace?

namespace MyNamespace;
//здесь код, который использует неймспейс

//здесь нужно создать новый класс в глобальном неймспейсе
class NewClass extends \GlobalClass {}


Можно ли как-то это сделать без использования include/require.
p.s. Эта строка должна быть именно внутри этого файла, т.е. класс должен быть не в отдельном файле (!), поэтому возник вопрос. По факту нужно просто наличие (!) класса с определённым именем, унаследованного от другого класса.
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
DevMan
@DevMan
хотя задача и странная, но:
namespace testnamespace;
class Test {
	public function __construct() {
		echo 'Hi';
	}
}

new \Test; // Fatal error: Uncaught Error: Class 'Test' not found

class_alias('\testnamespace\Test', 'GlobalTest');
new \GlobalTest; // Hi
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@heahoh
Full stackoverflow developer
Вы сами можете определить функцию автозагрузки классов (каким образом по имени класса интерпретатор будет находить их объявление в файлах)
php.net/manual/ru/function.spl-autoload-register.php
Ответ написан
@bears
Описание нескольких пространств имен в одном файле

<?php
namespace MyProject {

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}

namespace {       // глобальный код
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы