Wez,
+2e32-1
you read my mind ! but does this also entails having an OO interface to
the streams as they are. it would be very annoying to have a cool stream
abstraction interface, but then have to check for every resource list entry
under the sun to access the stream_ops (le_ftp, le_file, le_xxx, etc).
"Wez Furlong" <[EMAIL PROTECTED]> wrote in message
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> I thought it might be nice to allow people writing class
> libraries in PHP/PEAR to be able to roll-their-own streams using
> PHP code.
>
> It would be implemented something like the user-mode session module
> handler, but a bit more OO; they would declare a class (see below)
> and register it as a wrapper using a new user-space function called
> file_register_wrapper(string $protocol, string $classname).
>
> file_register_wrapper would fail if the wrapper is already registered.
>
> The php_stream_open_wrapper function would create an instance of the
> class and then call it's methods when the equivalent methods in
> the php_stream_ops structure are called.
>
> This would allow some really cool things, like defining a custom
> protocol and then passing that custom URL around to all sorts of
> PHP functions (fopen(), copy(), extension functions that use wrappers)
> and have them handle it without even noticing that it's implemented
> in PHP code.
>
> Comments please!
>
> --Wez.
>
>
> class my_stream {
> function open($path, $mode, $options, &$opened_path)
> {
> return true/false;
> }
> function read($count)
> {
> return false on error;
> else return string;
> }
> function write($data)
> {
> return false on error;
> else return count written;
> }
> function close()
> {
> }
> function flush()
> {
> }
> /* these are optional */
> function seek($offset, $whence)
> {
> }
> function gets($size)
> {
> return false on error;
> else return string;
> }
> }
>
>
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php