我正在现有项目中实现名称空间。我发现您可以使用关键字“use”将类导入到命名空间中。我的问题是,我还可以将所有类从1个名称空间导入到另一个名称空间中。例如:
namespace foo
{
class bar
{
public static $a = 'foobar';
}
}
namespace
{
use \foo; //This doesn't work!
echo bar::$a;
}
PHP 7 +的更新
PHP 7中的新功能是分组声明。这并不像对给定命名空间中的所有类使用1'use statement'那么容易,但是使它更容易......
示例代码:
<?php
// Pre PHP 7 code
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C;
// PHP 7+ code
use some\namespace\{ClassA, ClassB, ClassC as C};
?>
答案 0 :(得分:58)
这在PHP中是不可能的。
您所能做的就是:
namespace Foo;
use Bar;
$obj = new Bar\SomeClassFromBar();
答案 1 :(得分:0)
您可以使用“ as”来缩短和命名长名称空间
composer.json
{
"autoload": {
"psr-4": {
"Lorem\\Ipsum\\": "lorem/ipsum",
"Lorem\\Ipsum\\Dolor\\": "lorem/ipsum/dolor",
"Lorem\\Ipsum\\Dolor\\Sit\\": "lorem/ipsum/dolor/sit"
}
}
}
index.php
<?php
use Lorem\Ipsum\Dolor\Sit as FOO;
define ('BASE_PATH',dirname(__FILE__));
require BASE_PATH.DIRECTORY_SEPARATOR.'vendor'.DIRECTORY_SEPARATOR.'autoload.php';
$bar = new FOO\Bar();
$baz = new FOO\Baz();
$qux = new FOO\Qux();