6.0.0-alpha10
5/14/25

[#6992] Horde_Vfs rewrite
Summary Horde_Vfs rewrite
Queue Horde Framework Packages
Queue Version HEAD
Type Enhancement
State Accepted
Priority 1. Low
Owners
Requester chuck (at) horde (dot) org
Created 06/30/2008 (6162 days ago)
Due
Updated 04/07/2009 (5881 days ago)
Assigned
Resolved
Milestone
Patch No

History
11/09/2008 01:27:51 AM Chuck Hagenbuch Comment #2 Reply to this comment
Access to file data should be provided through streams whenever 
possible. Some of the current VFS backends have readStream() methods 
already. MDB2 may provide access to database blobs through streams, 
for reference. Stream support should be added to Horde_Db, as well.
08/01/2008 10:55:26 AM Jan Schneider State ⇒ Accepted
 
06/30/2008 05:15:15 AM Chuck Hagenbuch Comment #1
Priority ⇒ 1. Low
Patch ⇒ No
Milestone ⇒
Queue ⇒ Horde Framework Packages
Summary ⇒ Horde_Vfs rewrite
Type ⇒ Enhancement
State ⇒ New
Reply to this comment
Horde_Vfs_Adapter_Base

Horde_Vfs_File (allow subclassing and specifying the file class to 
instantiate)

Horde_Vfs_Folder (allow subclassing and specifying the folder class to 
instantiate)



Filtering iterator, but let the adapter do the filter if it can. I.e, 
Horde_Vfs_Filter_Glob -> the file backend can do the glob natively, so 
the result isn't wrapped with that filter. Something like:



$vfs->ls($dir, array(new Horde_Vfs_Filter_Glob('*.php')));



- backend gets the array of filters

- if the backend can apply the filter it does

- otherwise, the resulting Horde_Vfs_Folder_Iterator is wrapped with a 
filtering iterator to apply the filter



- Subclass or copy SplFileObject, some of the DirectoryIterator stuff?





What else can be done with stream wrappers?

php -r "var_dump(stream_get_wrappers());"

array(14) {

   [0]=>

   string(3) "php"

   [1]=>

   string(4) "file"

   [2]=>

   string(4) "data"

   [3]=>

   string(4) "http"

   [4]=>

   string(3) "ftp"

   [5]=>

   string(13) "compress.zlib"

   [6]=>

   string(5) "https"

   [7]=>

   string(4) "ftps"

   [8]=>

   string(10) "ssh2.shell"

   [9]=>

   string(9) "ssh2.exec"

   [10]=>

   string(11) "ssh2.tunnel"

   [11]=>

   string(8) "ssh2.scp"

   [12]=>

   string(9) "ssh2.sftp"

   [13]=>

   string(3) "zip"

}

Saved Queries