Protocol-based test with a protocol other than "file://"

This commit is contained in:
Olav Schettler
2016-07-30 22:38:14 -07:00
committed by Justin Hileman
parent fee4544785
commit eeee916433
2 changed files with 71 additions and 1 deletions
+70
View File
@@ -15,3 +15,73 @@ Mustache_Autoloader::register();
Mustache_Autoloader::register(dirname(__FILE__) . '/../test');
require dirname(__FILE__) . '/../vendor/yaml/lib/sfYamlParser.php';
/**
* Minimal stream wrapper to test protocol-based access to templates
*/
class TestStream
{
private $filehandle;
/**
* Always returns false
*
* @param string $path
* @param int $flags
* @return array
*/
public function url_stat($path, $flags)
{
return false;
}
/**
* Open the file
*
* @param string $path
* @param string $mode
* @return bool
*/
public function stream_open($path, $mode)
{
$path = preg_replace('-^test://-', '', $path);
$this->filehandle = fopen($path, $mode);
return $this->filehandle !== false;
}
/**
* @return array
*/
public function stream_stat()
{
return [];
}
/**
* @param int $count
* @return string
*/
public function stream_read($count)
{
return fgets($this->filehandle, $count);
}
/**
* @return bool
*/
public function stream_eof()
{
return feof($this->filehandle);
}
/**
* @return bool
*/
public function stream_close()
{
return fclose($this->filehandle);
}
}
stream_wrapper_register('test', TestStream::class)
|| die('Failed to register protocol');