gpt4 book ai didi

变量中的 PHP 命名空间类

转载 作者:行者123 更新时间:2023-12-04 17:00:37 25 4
gpt4 key购买 nike

谁能解释为什么下面的代码会导致“找不到类”错误?使用完全限定名称实例化类是可行的,但会消除“use”语句的优势。

<?php

namespace
{
use Foo\Bar;

new Bar; // Works

$class = 'Foo\Bar';

new $class; // Works

$class = 'Bar';

new $class; // "Cannot find class" error
}

namespace Foo
{
class Bar {}
}

谢谢

最佳答案

好吧,我想它实际上是一个 feature .出于同样的原因,别名在这里也无济于事:

Importing is performed at compile-time, and so does not affect dynamic class, function or constant names. [...]


<?php 
use My\Full\Classname as Another, My\Full\NSname;

$obj = new Another; // instantiates object of class My\Full\Classname
$a = 'Another';
$obj = new $a; // instantiates object of class Another
?>

是的,这有点违背了 use 的目的与动态类。

关于变量中的 PHP 命名空间类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com