This method is called immediately after the wrapper is initialized (f.e.
by fopen() and file_get_contents()).
$options can hold one of the following values OR'd together:
STREAM_USE_PATH
If path is relative, search for the resource using the include_path.
STREAM_REPORT_ERRORS
If this flag is set, you are responsible for raising errors using
trigger_error() during opening of the stream. If this flag is not set,
you should not raise any errors.
public open ( string $path, string $mode, integer $options, &$openedPathAndFilename ) : boolean | ||
$path | string | Specifies the URL that was passed to the original function. |
$mode | string | The mode used to open the file, as detailed for fopen(). |
$options | integer | Holds additional flags set by the streams API. |
return | boolean | TRUE on success or FALSE on failure. |
/** * @test */ public function openResolves40CharacterLongPackageKeysUsingThePackageManager() { $packageKey = 'Some.PackageKey.Containing.40.Characters'; mkdir('vfs://Foo/Some/'); file_put_contents('vfs://Foo/Some/Path', 'fixture'); $this->mockPackageManager->expects($this->once())->method('isPackageAvailable')->with($packageKey)->will($this->returnValue(true)); $mockPackage = $this->createMock(PackageInterface::class); $mockPackage->expects($this->any())->method('getResourcesPath')->will($this->returnValue('vfs://Foo')); $this->mockPackageManager->expects($this->once())->method('getPackage')->with($packageKey)->will($this->returnValue($mockPackage)); $openedPathAndFilename = ''; $this->assertTrue($this->resourceStreamWrapper->open('resource://' . $packageKey . '/Some/Path', 'r', 0, $openedPathAndFilename)); $this->assertSame($openedPathAndFilename, 'vfs://Foo/Some/Path'); }