我有一个我想注册的类 VarStream
stream_wrapper_register('var', 'VarStream');
我们的类总是命名空间,所以我试过
stream_wrapper_register('var', '\OurSpace\VarStream');
没有运气。
注册流包装器时可以使用命名空间吗?
我有一个我想注册的类 VarStream
stream_wrapper_register('var', 'VarStream');
我们的类总是命名空间,所以我试过
stream_wrapper_register('var', '\OurSpace\VarStream');
没有运气。
注册流包装器时可以使用命名空间吗?
我已经通过使用::class解决了这样的问题,其中
允许在编译时进行完全限定的类名解析
例如,
stream_wrapper_register("stream", self::class)
所以你不必自己考虑(反)斜线;]
是的你可以。您需要提供流包装类的FQCN(Fully-Qualified-Class-Name)。
您可能认为在您提供的代码中您已经拥有它:
stream_wrapper_register('var', '\OurSpace\VarStream');
但事实并非如此,因为 FQCN 从不以反斜杠“ \
”开头。
而是使用(仅)该类的类名:
stream_wrapper_register('var', 'OurSpace\VarStream');
通常不需要前导反斜杠。即使在这种情况下,它也会妨碍正确使用。它不是(完全限定的)类名的一部分。当您将类名作为字符串参数传递时,通常总是会出现这种情况。