登録したいクラス VarStream があります
stream_wrapper_register('var', 'VarStream');
私たちのクラスは常に名前空間になっているので、試してみました
stream_wrapper_register('var', '\OurSpace\VarStream');
運がない。
ストリーム ラッパーを登録するときに名前空間を使用できますか?
登録したいクラス VarStream があります
stream_wrapper_register('var', 'VarStream');
私たちのクラスは常に名前空間になっているので、試してみました
stream_wrapper_register('var', '\OurSpace\VarStream');
運がない。
ストリーム ラッパーを登録するときに名前空間を使用できますか?
はい、できます。ストリーム ラッパー クラスのFQCN (完全修飾クラス名)を指定する必要があります。
あなたが提供したコードには、すでにそれがあると思うかもしれません:
stream_wrapper_register('var', '\OurSpace\VarStream');
しかし、FQCN は決してバックスラッシュ " \
" で始まらないため、そうではありません。
代わりに、そのクラスのクラス名を (そのまま) 使用します。
stream_wrapper_register('var', 'OurSpace\VarStream');
通常、先頭のバックスラッシュは必要ありません。この場合でも、適切な使用を妨げます。(完全修飾された) クラス名の一部ではありません。これは通常、クラス名を文字列パラメーターとして渡す場合に常に当てはまります。
::classを使用してこのような問題を解決しました。
コンパイル時に完全修飾クラス名の解決が可能
例えば、
stream_wrapper_register("stream", self::class)
したがって、自分で (バック) スラッシュについて考える必要はありません ;]