当前位置: 首页 > 面试题库 >

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

姜景焕
2023-03-14
问题内容

我在现有项目中实现名称空间。我发现您可以使用关键字“ 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语句”那样容易,但是却使它更容易…

示例代码

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


问题答案:

这在PHP中是不可能的。

您所能做的就是:

namespace Foo;

use Bar;

$obj = new Bar\SomeClassFromBar();


 类似资料:
  • 我希望在Atom中有一种替代Sublime文本包Php伴侣的方法,允许导入名称空间和类。 我试图弄清楚atom autocomplete php插件中的这个功能是如何工作的。 文档中列出了以下功能: 自动完成类名,并在需要时自动添加use语句 在游标下添加类的use语句(ctrl-alt-u) 所以当我需要在我的PHP文件中导入一个类时,我会使用 我会得到一系列选项,但我的列表中没有列出我需要的c

  • 我有一个关于ES6导入模块的问题。 我试图在我的Three.js代码中添加OrbitControl。由于OrbitControls是一个单独的模块,我需要在我的代码中分别导入它们,如下所示。它工作得很好。 然而 我首先想到的是 原因是, 据我所知,如果模块将某些内容导出为导出默认值, 我可以通过在“导入”代码中添加花括号来访问它们。 但是,它没有起作用,因此我假设“三个orbitcontrols”

  • 问题内容: 这两行之间的主要区别是什么: 和 当我使用第一行时,我得到一个错误:而且我不太确定为什么会收到此错误?第二行似乎已解决了该问题。 问题答案: 如果您使用: 这意味着ArrayObject是在当前名称空间中定义的。您可以在全局名称空间(当前作用域中未定义名称空间)中,或者在与当前作用域相同的名称空间中定义ArrayObject时,使用此语法(示例)。 如果您使用: 这意味着ArrayOb

  • 问题内容: 想知道是否有人在使用新功能通过PHP 5.3对类进行命名空间时是否遇到了此问题。 我正在使用单独的类来生成动态类调用,以在应用程序中定义用户类型。基本上,类定义器采用类型的整数表示形式并解释它们,返回一个包含要用作该用户模型的类名的字符串。 我在全局范围内定义了具有该名称的用户类型的对象模型,但是在Editor名称空间中,该用户的编辑器具有另一个名称相同的对象。由于某些原因,PHP不允

  • 我在访问另一个命名空间中存在的服务时遇到问题。 我有两个名称空间(在同一个集群中)airflow-dev和dask-dev。 在dask-dev名称空间中,我部署了dask集群(dask调度器和工作器)。此外,还为dask-scheduler pod创建了一个服务(集群IP)。我可以使用“kubectl port-forward”命令从chrome访问dask-scheduler pod。 然而,