PHP 如何从另一个名称空间导入所有类

我正在现有项目中实现名称空间。我发现可以使用关键字“ use”将类导入到名称空间中。我的问题是,我是否也可以将所有类从1个名称空间导入到另一个名称空间中。例如:

namespace foo
{


class bar
{


public static $a = 'foobar';


}


}


namespace
{
use \foo;  //This doesn't work!
echo bar::$a;
}

PHP 7 + 的更新

PHP7中的一个新特性是分组声明。这并不像对给定名称空间中的所有类使用1“ use 语句”那样容易,但是多少会更容易一些..。

示例代码:

<?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};
?>

参见: https://secure.php.net/manual/en/migration70.new-features.php#migration70.new-features.group-use-declarations

55849 次浏览

This is not possible in PHP.

All you can do is:

namespace Foo;


use Bar;


$obj = new Bar\SomeClassFromBar();

You can use the "as" for shortening and aliasing long namespaces

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();