Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 临时名称空间_Php_Namespaces - Fatal编程技术网

Php 临时名称空间

Php 临时名称空间,php,namespaces,Php,Namespaces,有没有办法临时使用名称空间? 我使用一个库来创建表单,它使用命名空间,问题是,我通常想在页面中间创建一个表单,因此在全局命名空间中。然后,如果我想调用这个库的任何函数,我必须用名称空间作为前缀\ PHP中是否有任何方法可以执行以下操作: Blabla global namespace strlen('test'); // 4 namespace Namespace { test(); } More global PHP 并让它引用Namespace\test? 这是您能得到的最

有没有办法临时使用名称空间? 我使用一个库来创建表单,它使用命名空间,问题是,我通常想在页面中间创建一个表单,因此在全局命名空间中。然后,如果我想调用这个库的任何函数,我必须用名称空间作为前缀\

PHP中是否有任何方法可以执行以下操作:

Blabla global namespace
strlen('test'); // 4

namespace Namespace
{
    test();
}

More global PHP
并让它引用Namespace\test?



这是您能得到的最接近的名称空间-暂时无法更改默认名称空间。

我知道这是一个老问题,虽然被接受的答案回答了问题,但我觉得OP真正想问的是什么“我可以使用来自另一个命名空间的全局命名空间中的项。这里的答案是明确而简单的“是”

想象两个类(一个在全局名称空间中,另一个在自己的名称空间中):

ClassInGlobal.php

<?php
class ClassInGlobal
{
    public static function doStuff()
    {
        echo 'I do some stuff';
    }
}
<?php
namespace App\Classes;

class ClassInNamespace
{
    public function callDoStuff()
    {
        \ClassInGlobal::doStuff();
    }
}
上述操作执行良好。所需的只是一个前导斜杠来指定完全限定的全局命名空间。此外,您可以在命名空间声明之后添加一个
use ClassInGlobal
声明,并省略前导斜杠

通过将命名空间函数抽象为一个类,这可能会转化为原始问题,然后您可以稍微修改OP的代码以实现以下目的:

require './Namespace/Utilities.php';

Blabla global namespace
strlen('test'); // 4

\Namespace\Utilities::test();

More global PHP

希望这能帮助来这里寻找它的人。

好吧,这可能足够好了。快速提问:我在全局命名空间中使用了一组类,通过autoloader导入。现在,如果我在开始时使用use声明它们,但调用时仍会加载它们,这会改变性能吗?它们将通过use st加载它不应该改变任何性能方面的东西,只是你的自动加载器包含了另一个文件。
require './Namespace/Utilities.php';

Blabla global namespace
strlen('test'); // 4

\Namespace\Utilities::test();

More global PHP