1

登録したいクラス VarStream があります

stream_wrapper_register('var', 'VarStream');

私たちのクラスは常に名前空間になっているので、試してみました

stream_wrapper_register('var', '\OurSpace\VarStream');

運がない。

ストリーム ラッパーを登録するときに名前空間を使用できますか?

4

2 に答える 2

1

はい、できます。ストリーム ラッパー クラスのFQCN (完全修飾クラス名)を指定する必要があります。

あなたが提供したコードには、すでにそれがあると思うかもしれません:

stream_wrapper_register('var', '\OurSpace\VarStream');

しかし、FQCN は決してバックスラッシュ " \" で始まらないため、そうではありません。

代わりに、そのクラスのクラス名を (そのまま) 使用します。

stream_wrapper_register('var', 'OurSpace\VarStream');

通常、先頭のバックスラッシュは必要ありません。この場合でも、適切な使用を妨げます。(完全修飾された) クラス名の一部ではありません。これは通常、クラス名を文字列パラメーターとして渡す場合に常に当てはまります。

于 2015-12-27T11:39:05.593 に答える
1

::classを使用してこのような問題を解決しました。

コンパイル時に完全修飾クラス名の解決が可能

例えば、

stream_wrapper_register("stream", self::class)

したがって、自分で (バック) スラッシュについて考える必要はありません ;]

于 2018-05-25T07:33:30.080 に答える