<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Stubblog - vfsStream</title>
    <link>http://www.stubbles.org/</link>
    <description>Less slogan, more code.</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.1 - http://www.s9y.org/</generator>
    <pubDate>Mon, 15 Feb 2010 15:46:33 GMT</pubDate>

    <image>
        <url>http://www.stubbles.org/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Stubblog - vfsStream - Less slogan, more code.</title>
        <link>http://www.stubbles.org/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>vfsStream 0.6.0 released</title>
    <link>http://www.stubbles.org/archives/74-vfsStream-0.6.0-released.html</link>
            <category>Announcements</category>
            <category>Planet PHP</category>
            <category>vfsStream</category>
    
    <comments>http://www.stubbles.org/archives/74-vfsStream-0.6.0-released.html#comments</comments>
    <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=74</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.stubbles.org/rss.php?version=2.0&amp;type=comments&amp;cid=74</wfw:commentRss>
    

    <author>nospam@example.com (Frank Kleine)</author>
    <content:encoded>
    Seldom in a life of a developer it comes to the point where a bug can be fixed by a feature addition. This February, it happend to vfsStream. A user reported a &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=442&amp;amp;entry_id=74&quot; title=&quot;http://code.google.com/p/bovigo/issues/detail?id=13&quot;  onmouseover=&quot;window.status=&#039;http://code.google.com/p/bovigo/issues/detail?id=13&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;bug&lt;/a&gt; where overwriting an existing vfsStream file with new but smaller content replaced only portions of the file, leaving the rest in place instead of truncating the old content before writing the fresh content. After some investigation it turned out the best fix for the problem was to implement the long scheduled &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=443&amp;amp;entry_id=74&quot; title=&quot;http://code.google.com/p/bovigo/issues/detail?id=7&quot;  onmouseover=&quot;window.status=&#039;http://code.google.com/p/bovigo/issues/detail?id=7&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;feature issue 7&lt;/a&gt;. Thought, said, done. So today I shipped vfsStream 0.6.0 including complete support for for $mode param when opening files.&lt;br /&gt;
&lt;br /&gt;
While I was at it, I added support for the $options param as well, it now evaluates whether STREAM_REPORT_ERRORS is set and acts accordingly when opening a file.&lt;br /&gt;
&lt;br /&gt;
Unfortunately there are bad news as well. Due to &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=444&amp;amp;entry_id=74&quot; title=&quot;http://code.google.com/p/bovigo/issues/detail?id=11&quot;  onmouseover=&quot;window.status=&#039;http://code.google.com/p/bovigo/issues/detail?id=11&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;another issue&lt;/a&gt; I found out that ext/zip does not work with vfsStream, and that there is no way to add support for it in vfsStream. Maybe if someone with slightly more C skills than me (which are equal to zero) might want to look into this problem for a better explanation, as I can only assume that it&#039;s due to ext/zip not supporting userland stream wrappers.&lt;br /&gt;
&lt;br /&gt;
If you like the new additions &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=445&amp;amp;entry_id=74&quot; title=&quot;http://code.google.com/p/bovigo/wiki/vfsStreamDocsInstall&quot;  onmouseover=&quot;window.status=&#039;http://code.google.com/p/bovigo/wiki/vfsStreamDocsInstall&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;get the new release&lt;/a&gt;. 
    </content:encoded>

    <pubDate>Mon, 15 Feb 2010 16:46:33 +0100</pubDate>
    <guid isPermaLink="false">http://www.stubbles.org/archives/74-guid.html</guid>
    
</item>
<item>
    <title>vfsStream 0.5.0 released</title>
    <link>http://www.stubbles.org/archives/73-vfsStream-0.5.0-released.html</link>
            <category>Announcements</category>
            <category>Planet PHP</category>
            <category>vfsStream</category>
    
    <comments>http://www.stubbles.org/archives/73-vfsStream-0.5.0-released.html#comments</comments>
    <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=73</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.stubbles.org/rss.php?version=2.0&amp;type=comments&amp;cid=73</wfw:commentRss>
    

    <author>nospam@example.com (Frank Kleine)</author>
    <content:encoded>
    Today I shipped vfsStream 0.5.0 which brings a new feature thanks to the efforts of Benoit Aubuchon: vfsStream now supports the rename() functionality which allows you to write test cases using vfsStream for methods that rename files. Another patch of him was to change the stat() call to respect the STREAM_URL_STAT_QUIET flag.&lt;br /&gt;
&lt;br /&gt;
One more new feature is the added support for . as current directory alias so that vfs://foo/. resolves to vfs://foo - this allows to use file_exists($dir . &#039;/.&#039;) as workaround for the failing is_executable() call on directories, as described in the comments to the &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=440&amp;amp;entry_id=73&quot; title=&quot;http://php.net/is_executable&quot;  onmouseover=&quot;window.status=&#039;http://php.net/is_executable&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;is_executable() documentation in the PHP manual&lt;/a&gt;. Of course this raises the question if vfsStream will support .. as well - if somebody takes the time to create a patch I will incorporate this. I did not look into this issue further, but I guess it might involve recursion and a more advanced parsing of the vfs URL to make it work properly, as there might be cases like vfs://foo/bar/baz/../../dummy.&lt;br /&gt;
&lt;br /&gt;
So &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=441&amp;amp;entry_id=73&quot; title=&quot;http://code.google.com/p/bovigo/wiki/vfsStreamDocsInstall&quot;  onmouseover=&quot;window.status=&#039;http://code.google.com/p/bovigo/wiki/vfsStreamDocsInstall&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;grab the release&lt;/a&gt; and make use of the new features, if you like to. 
    </content:encoded>

    <pubDate>Mon, 25 Jan 2010 17:17:37 +0100</pubDate>
    <guid isPermaLink="false">http://www.stubbles.org/archives/73-guid.html</guid>
    
</item>
<item>
    <title>vfsStream 0.4.0 released</title>
    <link>http://www.stubbles.org/archives/64-vfsStream-0.4.0-released.html</link>
            <category>Announcements</category>
            <category>Planet PHP</category>
            <category>vfsStream</category>
    
    <comments>http://www.stubbles.org/archives/64-vfsStream-0.4.0-released.html#comments</comments>
    <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=64</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.stubbles.org/rss.php?version=2.0&amp;type=comments&amp;cid=64</wfw:commentRss>
    

    <author>nospam@example.com (Frank Kleine)</author>
    <content:encoded>
    Some minutes ago I released &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=387&amp;amp;entry_id=64&quot; title=&quot;http://vfs.bovigo.org/&quot;  onmouseover=&quot;window.status=&#039;http://vfs.bovigo.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;vfsStream&lt;/a&gt; 0.4.0, introducing support for file modes, owners and groups. While I planned to implement this at least since a year it took me three tries to get it implemented, and while implementing this I stumbled about some issues which can not be solved by vfsStream. Major problem is that the PHP functions &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=388&amp;amp;entry_id=64&quot; title=&quot;http://php.net/chmod&quot;  onmouseover=&quot;window.status=&#039;http://php.net/chmod&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;chmod()&lt;/a&gt;, &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=389&amp;amp;entry_id=64&quot; title=&quot;http://php.net/chown&quot;  onmouseover=&quot;window.status=&#039;http://php.net/chown&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;chown()&lt;/a&gt; and &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=390&amp;amp;entry_id=64&quot; title=&quot;http://php.net/chgrp&quot;  onmouseover=&quot;window.status=&#039;http://php.net/chgrp&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;chgrp()&lt;/a&gt; do not work with vfsStream URLs due to limitations imposed by PHP (or possibly by underlying C, not sure). The &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=391&amp;amp;entry_id=64&quot; title=&quot;http://php.net/manual/en/class.streamwrapper.php&quot;  onmouseover=&quot;window.status=&#039;http://php.net/manual/en/class.streamwrapper.php&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;stream wrapper API&lt;/a&gt; has no support to enable setting file modes, owner or group of a userland stream implementation. This means the usage of file mode support is limited and can not be applied to create tests for classes using one of the three functions. However, it is still possible to use file modes for testing correct usage of is_readable(), is_writable() and is_executable(). Another usage scenario is to make sure directories created with mkdir() receive the correct file mode, see the &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=392&amp;amp;entry_id=64&quot; title=&quot;http://code.google.com/p/bovigo/wiki/vfsStreamDocsFilemodeExample&quot;  onmouseover=&quot;window.status=&#039;http://code.google.com/p/bovigo/wiki/vfsStreamDocsFilemodeExample&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;file mode example&lt;/a&gt;. I&#039;m sure users will come up with other usage scenarios I did not even thought of. &lt;img src=&quot;http://www.stubbles.org/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Beside this new feature the release contains a bugfix for vfsStreamDirectory::addChild() to make sure adding another child of the same name as an existing child replaces this existing child, and a fix to return correct results for stat() calls. Grab the release via it&#039;s pear channel pear.php-tools.net and try it out. I suspect the file mode support may contain bugs because I did not have the time to use it in other projects, but after all, it is still in alpha stage. &lt;img src=&quot;http://www.stubbles.org/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Mon, 13 Jul 2009 21:19:59 +0200</pubDate>
    <guid isPermaLink="false">http://www.stubbles.org/archives/64-guid.html</guid>
    
</item>
<item>
    <title>Article about vfsStream in german PHP magazine</title>
    <link>http://www.stubbles.org/archives/63-Article-about-vfsStream-in-german-PHP-magazine.html</link>
            <category>Planet PHP</category>
            <category>vfsStream</category>
    
    <comments>http://www.stubbles.org/archives/63-Article-about-vfsStream-in-german-PHP-magazine.html#comments</comments>
    <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=63</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://www.stubbles.org/rss.php?version=2.0&amp;type=comments&amp;cid=63</wfw:commentRss>
    

    <author>nospam@example.com (Frank Kleine)</author>
    <content:encoded>
    The current issue of the german PHP magazine features an article about &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=385&amp;amp;entry_id=63&quot; title=&quot;http://vfs.bovigo.org/&quot;  onmouseover=&quot;window.status=&#039;http://vfs.bovigo.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;vfsStream&lt;/a&gt;. On three pages &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=386&amp;amp;entry_id=63&quot; title=&quot;http://blog.mike-wittje.de/&quot;  onmouseover=&quot;window.status=&#039;http://blog.mike-wittje.de/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Mike Wittje&lt;/a&gt; (I hope this is the correct Mike, just guessed &lt;img src=&quot;http://www.stubbles.org/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;) describes how vfsStream can be used to simplify and improve unit tests for classes utilizing the file system and file system functions. Thanks to Mike for writing the article, helping to spread the word about vfsStream.&lt;br /&gt;
&lt;br /&gt;
Over the weekend I&#039;m going to test vfsStream with PHP 5.3 and try to fix any issues which pop up. I already received a patch by mail which is said to fix an issue with is_readable() (not tested yet), so it seems reasonable there will be a new release within the upcoming days. 
    </content:encoded>

    <pubDate>Sat, 11 Jul 2009 17:45:54 +0200</pubDate>
    <guid isPermaLink="false">http://www.stubbles.org/archives/63-guid.html</guid>
    
</item>
<item>
    <title>vfsStream 0.3.2 released</title>
    <link>http://www.stubbles.org/archives/58-vfsStream-0.3.2-released.html</link>
            <category>Announcements</category>
            <category>Planet PHP</category>
            <category>vfsStream</category>
    
    <comments>http://www.stubbles.org/archives/58-vfsStream-0.3.2-released.html#comments</comments>
    <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=58</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.stubbles.org/rss.php?version=2.0&amp;type=comments&amp;cid=58</wfw:commentRss>
    

    <author>nospam@example.com (Frank Kleine)</author>
    <content:encoded>
    Nearly about a year passed since the last release of &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=377&amp;amp;entry_id=58&quot; title=&quot;http://vfs.bovigo.org/&quot;  onmouseover=&quot;window.status=&#039;http://vfs.bovigo.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;vfsStream&lt;/a&gt;, and some bugs were found by users of vfsStream. This was quite a surprise for me since I did not expect that anybody would use it. &lt;img src=&quot;http://www.stubbles.org/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
This evening I fixed another bug reported some days ago, and since a patch for another bug was submitted and committed about half a year ago I decided to release version 0.3.2 tonight, so these are the changes:&lt;br /&gt;
&lt;br /&gt;
- added support for trailing slashes on directories in vfsStream urls, patch provided by Gabriel Birke&lt;br /&gt;
- fixed bug #4: vfsstream can only be read once, reported by Christoph Bloemer&lt;br /&gt;
- enabled multiple iterations at the same time over the same directory&lt;br /&gt;
&lt;br /&gt;
A big thank you to the bug reporters for their help to improve vfsStream. This should give me some motivation to go for 0.4.0 and implement support for file modes, at least being able to store and read them - full file mode support will be a hell of a work, not sure if it is worth the effort. 
    </content:encoded>

    <pubDate>Mon, 16 Feb 2009 22:20:05 +0100</pubDate>
    <guid isPermaLink="false">http://www.stubbles.org/archives/58-guid.html</guid>
    
</item>
<item>
    <title>vfsStream 0.3.0 and good bye SimpleTest</title>
    <link>http://www.stubbles.org/archives/39-vfsStream-0.3.0-and-good-bye-SimpleTest.html</link>
            <category>Planet PHP</category>
            <category>vfsStream</category>
    
    <comments>http://www.stubbles.org/archives/39-vfsStream-0.3.0-and-good-bye-SimpleTest.html#comments</comments>
    <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=39</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://www.stubbles.org/rss.php?version=2.0&amp;type=comments&amp;cid=39</wfw:commentRss>
    

    <author>nospam@example.com (Frank Kleine)</author>
    <content:encoded>
    Against my intent of starting to work on file modes for 0.3.0 I decided that it is time to get an own repository for &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=272&amp;amp;entry_id=39&quot; title=&quot;http://vfs.bovigo.org/&quot;  onmouseover=&quot;window.status=&#039;http://vfs.bovigo.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;vfsStream&lt;/a&gt; in order to maintain it independently from Stubbles, which was the perfect reason to open a new project on Google Code. I will see if this proves to be a good solution for day to day development.&lt;br /&gt;
&lt;br /&gt;
The movement also marked the reason to try PHPUnit because I wanted to make use of its code coverage and its software metrics features. Especially the last one showed me a bunch of points that required refactoring before starting something big like supporting file modes. During refactoring some improvements made it into the code which justified a new release: vfsStream now supports rmdir(), and I made some API changes. I dropped vfsStreamDirectory::ceate() in favor of vfsStream::newDirectory() to be equivalent to vfsStream::newFile(). Additionally there is a new vfsStreamContent::at() method now, which allows to write code like this:&lt;br /&gt;
&lt;code&gt;
$parentDir = vfsStream::newDirectory(&#039;newdir&#039;)-&gt;at(vfsStreamWrapper::getRoot());
$file = vfsStream::newFile(&#039;file.txt&#039;)-&gt;withContent(&#039;foo&#039;)
                                      -&gt;lastModified(time() - 86400)
                                      -&gt;at($parentDir);
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
So far I&#039;m very satisfied with the software analysis features of PHPUnit that I&#039;m thinking very hard about saying good bye to SimpleTest in my other projects. Given the current state of SimpleTest&#039;s development I do not expect to get similar features in SimpleTest any time soon, and unfortunately I do not have the time to contribute to SimpleTest even if it would be a lot of fun I guess. 
    </content:encoded>

    <pubDate>Wed, 02 Jan 2008 23:46:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.stubbles.org/archives/39-guid.html</guid>
    
</item>
<item>
    <title>vfsStream 0.2.0 released</title>
    <link>http://www.stubbles.org/archives/37-vfsStream-0.2.0-released.html</link>
            <category>Planet PHP</category>
            <category>vfsStream</category>
    
    <comments>http://www.stubbles.org/archives/37-vfsStream-0.2.0-released.html#comments</comments>
    <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=37</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.stubbles.org/rss.php?version=2.0&amp;type=comments&amp;cid=37</wfw:commentRss>
    

    <author>nospam@example.com (Frank Kleine)</author>
    <content:encoded>
    Having done more work on &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=257&amp;amp;entry_id=37&quot; title=&quot;http://vfs.bovigo.org/&quot;  onmouseover=&quot;window.status=&#039;http://vfs.bovigo.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;vfsStream&lt;/a&gt; I felt it is time to do the next release before starting to work on the next big issue&amp;#8482;. The new 0.2.0 release focuses on API improvements as well as support for differentiating between directories and files. API improvements are a new vfsStream::url() method to assist in creating correct vfsStream urls. Up until now you had to write something like&lt;br /&gt;
&lt;code&gt;$url = vfsStreamWrapper::PROTOCOL . &#039;://path/to/file.txt&#039;;&lt;/code&gt;&lt;br /&gt;
which is kind of ugly and unhandy to type. Now you can do&lt;br /&gt;
&lt;code&gt;$url = vfsStream::url(&#039;path/to/file.txt&#039;);&lt;/code&gt; which should be easier and less to type.&lt;br /&gt;
Another API improvement is the new vfsStream::newFile() method to be able to do&lt;br /&gt;
&lt;code&gt;$file = vfsStream::newFile(&quot;foo.txt&quot;)-&gt;withContent(&quot;bar&quot;);&lt;/code&gt;&lt;br /&gt;
Following an advice by David Zülke I changed vfsStreamWrapper::register() to reset the directory root to null.&lt;br /&gt;
&lt;br /&gt;
Additionally vfsStream now supports is_dir(), is_file() and is_readable(). However there is still a small drawback to is_readable(), as long as file mode is not supported existing pathes will lead to true, and non-existing pathes to false. Currently all files and directories always have 0777 as file mode. As I require support for file modes now this will be part of the 0.3.0 release.&lt;br /&gt;
&lt;br /&gt;
Another thing I found during the last days is that realpath() seems only to work with real files, but not with any other URL types. That&#039;s a bit sad because it means one can not use this function if one wants to test its file operations with vfsStream. 
    </content:encoded>

    <pubDate>Sat, 29 Dec 2007 14:33:58 +0100</pubDate>
    <guid isPermaLink="false">http://www.stubbles.org/archives/37-guid.html</guid>
    
</item>
<item>
    <title>vfsStream 0.1.0 released</title>
    <link>http://www.stubbles.org/archives/36-vfsStream-0.1.0-released.html</link>
            <category>Planet PHP</category>
            <category>vfsStream</category>
    
    <comments>http://www.stubbles.org/archives/36-vfsStream-0.1.0-released.html#comments</comments>
    <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=36</wfw:comment>

    <slash:comments>8</slash:comments>
    <wfw:commentRss>http://www.stubbles.org/rss.php?version=2.0&amp;type=comments&amp;cid=36</wfw:commentRss>
    

    <author>nospam@example.com (Frank Kleine)</author>
    <content:encoded>
    Some minutes ago I released the first version of &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=258&amp;amp;entry_id=36&quot; title=&quot;http://vfs.bovigo.org/&quot;  onmouseover=&quot;window.status=&#039;http://vfs.bovigo.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;vfsStream&lt;/a&gt;. vfsStream is a stream wrapper for a virtual file system that may be helpful in unit tests to mock the real file system. It can be used with any unit test framework, like &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=259&amp;amp;entry_id=36&quot; title=&quot;http://phpunit.de/&quot;  onmouseover=&quot;window.status=&#039;http://phpunit.de/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHPUnit&lt;/a&gt; or &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=260&amp;amp;entry_id=36&quot; title=&quot;http://simpletest.org/&quot;  onmouseover=&quot;window.status=&#039;http://simpletest.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;SimpleTest&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The first idea for this came up when I prepared my talk about stream wrappers for the &lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=261&amp;amp;entry_id=36&quot; title=&quot;http://phpconference.com/&quot;  onmouseover=&quot;window.status=&#039;http://phpconference.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP conference&lt;/a&gt; in Frankfurt-Mörfelden earlier this year (&lt;a href=&quot;http://www.stubbles.org/exit.php?url_id=262&amp;amp;entry_id=36&quot; title=&quot;http://downloads.stubbles.net/&quot;  onmouseover=&quot;window.status=&#039;http://downloads.stubbles.net/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;slides still available&lt;/a&gt;). Everybody knows that you should not use real databases in unit tests, so why should one use the real file system? Of course you can create an IO abstraction layer, but PHP offers such easy access to file contents via its file_get_content() and file_put_content() functions as well as with its other file system functions that it would be a bit overdone to create such a layer just for testing purposes. Additionally there are stream wrappers which allow you to create your own protocol and use it with exactly this file functions.&lt;br /&gt;
&lt;br /&gt;
This was the point where I started thinking about it, so hacked together a first version as a prove-of-concept. Because it worked like a charm I started to use it in my own unit tests, which already saved me some time and problems. Today I decided it is time to release this as open source to the public to see if other people like the idea and have a use for it, therefore I did some refactorings, and did a first release. Unfortunately not everything works by now: It is currently not possible to rename a file or directory, and it is not possible to remove directories. Additionally file modes are completely ignored. The main reason for this is that I did not need one of this features until now. Feel free to send patches, wait until I have a need for it or beg me to implement them. &lt;img src=&quot;http://www.stubbles.org/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Fri, 14 Dec 2007 00:31:31 +0100</pubDate>
    <guid isPermaLink="false">http://www.stubbles.org/archives/36-guid.html</guid>
    
</item>

</channel>
</rss>