首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP如何从另一个命名空间导入所有类

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

Stack Overflow用户
提问于 2011-08-19 20:37:42
回答 2查看 50.9K关注 0票数 80

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

代码语言:javascript
复制
namespace foo
{

    class bar
    {

        public static $a = 'foobar';

    }

}

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

PHP 7+的更新

PHP7中的一个新特性是分组声明。这并不像对给定名称空间中的所有类使用一条“use语句”那么简单,但却让它变得更简单了……

示例代码:

代码语言:javascript
复制
<?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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-19 20:58:27

这在PHP中是不可能的。

你所能做的就是:

代码语言:javascript
复制
namespace Foo;

use Bar;

$obj = new Bar\SomeClassFromBar();
票数 79
EN

Stack Overflow用户

发布于 2019-08-08 19:44:14

您可以使用"as“来缩短长命名空间并为其添加别名

composer.json

代码语言:javascript
复制
{
    "autoload": {
        "psr-4": {
            "Lorem\\Ipsum\\": "lorem/ipsum",
            "Lorem\\Ipsum\\Dolor\\": "lorem/ipsum/dolor",
            "Lorem\\Ipsum\\Dolor\\Sit\\": "lorem/ipsum/dolor/sit"
        }
    }
}  

index.php

代码语言:javascript
复制
    <?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();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7121682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档