<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>PHPDeveloper.org</title>
    <link>http://www.phpdeveloper.org</link>
    <description>Up-to-the Minute PHP News, views and community</description>
    <language>en-us</language>
    <pubDate>Tue, 22 May 2012 12:44:52 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Ibuildings techPortal: DPC Radio: Distributed Couch Apps - Embracing eventual consistency]]></title>
      <guid>http://www.phpdeveloper.org/news/17155</guid>
      <link>http://www.phpdeveloper.org/news/17155</link>
      <description><![CDATA[<p>
On the Ibuildings techPortal today they've posted the latest episode of their DPC Radio series of podcasts, recordings of sessions from this year's Dutch PHP Conference. In <a href="http://techportal.ibuildings.com/2011/11/21/dpc-radio-distributed-couch-apps-embracing-eventual-consistency/">this new episode</a> they share the presentation by <i>Kore Nordmann</i> "Distributed Couch Apps - Embracing eventual consistency".
</p>
<blockquote>
CouchDB is a prominent representative of the NoSQL movement. Using its integrated web server and eventual consistent replication you can not only distribute data, but also full application code. This even works for clients which are not always connected to the internet, like e.g. mobile devices. This session gives you an insight Couch apps, their beauty and pitfalls.
</blockquote>
<p>
You can either listen via the <a href="http://techportal.ibuildings.com/2011/11/21/dpc-radio-distributed-couch-apps-embracing-eventual-consistency/">in-page player</a>, by <a href="http://dpcradio.s3.amazonaws.com/2011_006.mp3">downloading the mp3</a> or by <a href="http://feeds2.feedburner.com/ibuildingstechportal">subscribing to their feed</a>. You can find his slides over on <a href="http://talks.qafoo.com/">talks.qafoo.com</a>.
</p>]]></description>
      <pubDate>Mon, 21 Nov 2011 12:12:00 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[DZone.com: The era of Object-Document Mapping]]></title>
      <guid>http://www.phpdeveloper.org/news/16568</guid>
      <link>http://www.phpdeveloper.org/news/16568</link>
      <description><![CDATA[<p>
On the PHP on Windows section of DZone.com today <i>Giorgio Sironi</i> has posted about a different sort of object mapping than is usually thought of with databases - <a href="http://css.dzone.com/articles/era-object-document-mapping">object-document mapping</a>.
</p>
<blockquote>
The Data Mapper pattern is a mechanism for persistence where the application model and the data source have no dependencies between each other. [...] But everytime we talk about the Data Mapper pattern, we assume there is a relational database on the other side of the persistence boundary. We always save objects; we always map them to MySQL or Postgres tables; but it's not mandatory.
</blockquote>
<p>
He talks about two projects, <a href="http://www.doctrine-project.org/projects/mongodb_odm">MongoDb_ODM</a> and <a href="http://www.doctrine-project.org/projects/couchdb_odm">CouchDb_ODM</a>, that the Doctrine project is working on to help make working with document-driven databases as simple as the usual ORMs. He includes a brief code snippet showing how the feature will work (hint: a namespace of Document instead of Entity). He lists some of the features - including the usual ORM capabilities, support for collections, cascade of persistence - and where you can get the latest code for it (from <a href="https://github.com/doctrine/couchdb-odm.git">github</a> and <a href="pear.doctrine-project.org/DoctrineMongoDBODM-1.0.0BETA3">PEAR</a>
</p>]]></description>
      <pubDate>Fri, 08 Jul 2011 11:45:46 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[DZone.com: Using a stream wrapper to access CouchDb attachments with PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/16264</guid>
      <link>http://www.phpdeveloper.org/news/16264</link>
      <description><![CDATA[<p>
On DZone.com today there's a new post from <i>Gonzalo Ayuso</i> about using a stream wrapper to <a href="http://css.dzone.com/news/using-stream-wrapper-access">access CouchDb database</a> directly from PHP (via a call to its local file).
</p>
<blockquote>
Thanks to a <a href="http://gonzalo123.wordpress.com/2010/09/01/using-monkey-patching-to-store-files-into-couchdb-using-the-standard-filesystem-functions-with-php/#comment-377">comment</a> in my last post (many thanks <a href="http://www.whitewashing.de/">Benjamin</a>) I've discovered that it's possible to create a stream wrapper in <a href="http://www.php.net/manual/en/stream.streamwrapper.example-1.php">PHP</a> (I thought it was only available with a C extension). It's pretty straightforward to create the wrapper. Of course it's only an approach. We can create more functionality to our stram wrapper but at least this example meets my needs.
</blockquote>
<p>
His wrapper uses a client from his <a href="http://code.google.com/p/nov-framework/">Nov</a> framework to open the stream to the given path and gives read and write methods to work with the data inside the database. Code for the wrapper class is included as well as a bit of example code showing how it can be used with the custom stream protocol. You can find the complete code <a href="http://code.google.com/p/nov-framework/">here</a>.
</p>]]></description>
      <pubDate>Thu, 28 Apr 2011 10:45:27 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Ibuildings techPortal: DPCRadio: Embracing Constraints with CouchDB]]></title>
      <guid>http://www.phpdeveloper.org/news/16089</guid>
      <link>http://www.phpdeveloper.org/news/16089</link>
      <description><![CDATA[<p>
On the Ibuildings techPortal today they've posted the latest webcast in their "DPCRadio" series as recorded at last year's <a href="http://phpconference.nl">Dutch PHP Conference</a>. In this latest episode they share <i>David Zuelke</i>'s talk <a href="http://techportal.ibuildings.com/2011/03/23/dpcradio-embracing-constraints-with-couchdb/">Embracing Constraints with CouchDB</a>.
</p>
<blockquote>
There has been a lot of buzz lately about the NoSQL movement in general and CouchDB in particular. For people who are used to relational databases, a lot of CouchDB's limitations look like severe disadvantages; these constraints however can also be great opportunities. This talk will give an overview of CouchDB and then focus on embracing the system's constraints to build better products.
</blockquote>
<p>
You can either listen <a href="http://techportal.ibuildings.com/2011/03/23/dpcradio-embracing-constraints-with-couchdb/">in-page</a> or <a href="http://dpcradio.s3.amazonaws.com/2010_016.mp3">download the mp3</a> to get this latest episode. If you'd like to follow along with his slides, you can find them <a href="http://www.slideshare.net/Wombert/embracing-constraints-with-couchdb">on SlideShare</a>.
</p>]]></description>
      <pubDate>Wed, 23 Mar 2011 12:12:25 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Zend Developer Zone: Getting started with CouchDB : meet PHP on Couch]]></title>
      <guid>http://www.phpdeveloper.org/news/15110</guid>
      <link>http://www.phpdeveloper.org/news/15110</link>
      <description><![CDATA[<p>
On the Zend Developer Zone today <i>Michael Bailey</i> has posted <a href="http://devzone.zend.com/article/12523-Getting-started-with-CouchDB-meet-PHP-on-Couch">an introduction to CouchDb</a> including some sample code (in <a href="http://github.com/dready92/PHP-on-Couch/downloads">a download</a>) and a look at the basics of using the database itself.
</p>
<blockquote>
I will not detail the installation of the CouchDB server, <a href="http://wiki.apache.org/couchdb/Installation">the wiki got enough details</a>. For the rest of this article I will assume that we have a running CouchDB server waiting for our queries on couch.example.com on port 5984 (the default CouchDB port). Setting up <a href="http://github.com/dready92/PHP-on-Couch">PHP on Couch</a> is not really complicated : just <a href="http://github.com/dready92/PHP-on-Couch/downloads">download it on github.com</a>, extract the archive : the interesting bits are in the lib folder. 
</blockquote>
<p>
He starts with some of the key terms you'll need on the CouchDb side (like JSON, documents, _id and _rev) followed by the interaction between PHP and the database - creating a database, storing a document, using the document object mapper and working with views.
</p>]]></description>
      <pubDate>Fri, 10 Sep 2010 11:23:56 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Gonzalo Ayuso's Blog: Using a stream wrapper to access CouchDb attachments with PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/15079</guid>
      <link>http://www.phpdeveloper.org/news/15079</link>
      <description><![CDATA[<p>
In his continuing look at using CouchDb as a file system, <i>Gonzalo Ayuso</i> has posted <a href="http://gonzalo123.wordpress.com/2010/09/06/using-a-stream-wrapper-to-access-couchdb-attachments-with-php/">this third part</a> in the group of articles about using streams to connect your scripts to the database instance.
</p>
<blockquote>
I'm still working in my filesystem with CouchDb. After creating a library to enable working with PHP and CouchDB (see the post <a href="http://gonzalo123.wordpress.com/2010/08/30/using-couchdb-as-filesystem-with-php/">here</a>), and after using <a href="http://gonzalo123.wordpress.com/2010/09/01/using-monkey-patching-to-store-files-into-couchdb-using-the-standard-filesystem-functions-with-php/">Monkey Patching</a> to override standard PHP's filesystem functions. I've created another solution now. Thanks to a <a href="http://gonzalo123.wordpress.com/2010/09/01/using-monkey-patching-to-store-files-into-couchdb-using-the-standard-filesystem-functions-with-php/#comment-377">comment</a> in my last post (many thanks Benjamin) I've discovered that it's possible to create a stream wrapper in <a href="http://www.php.net/manual/en/stream.streamwrapper.example-1.php">PHP</a> (I thought it was only available with a C extension).
</blockquote>
<p>
He includes the code for the stream connection wrapper, a pretty simple script that parses the string it's given and opens a read/write stream to the source. There's also a "url_stat" method that will return to you the size of the stream in bytes. Then you just <a href="http://php.net/stream_wrapper_register">register the wrapper</a> and go about your normal file system calls to use the CouchDb directly.
</p>]]></description>
      <pubDate>Mon, 06 Sep 2010 08:15:22 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Gonzalo Ayuso's Blog: Using Monkey Patching to store files in CouchDb using the standard filesystem]]></title>
      <guid>http://www.phpdeveloper.org/news/15069</guid>
      <link>http://www.phpdeveloper.org/news/15069</link>
      <description><![CDATA[<p>
<i>Gonzalo Ayuso</i> takes his "CouchDb as a filesystem" approach one step further (see the previous post about it <a href="http://phpdeveloper.org/news/15061">here</a>) with <a href="http://gonzalo123.wordpress.com/2010/09/01/using-monkey-patching-to-store-files-into-couchdb-using-the-standard-filesystem-functions-with-php/">this new post</a> talking about <a href="http://en.wikipedia.org/wiki/Monkey_patch">monkey patching</a> to store files into the CouchDb server using the normal PHP file handling functions.
</p>
<blockquote>
Since PHP5.3 a new design pattern is available for us: Monkey Patching. With this pattern we can override PHP's core functions with a home-made functions in a different namespace (another example <a href="http://till.klampaeckel.de/blog/archives/105-Monkey-patching-in-PHP.html">here</a>). That's means if I have fopen function in the above example, PHP uses the filesystem function "fopen" but if we set a namespace in our example, PHP will search first the function within the current namespace.
</blockquote>
<p>
By defining the new interface inside of a namespace (with functions to override the default PHP file handlers) you can have the rest of the code call the same functions (fopen, fread, etc) but they'll do different things. In this case it handles them as push and pull to the CouchDb instead of the normal filesystem. You can grab the source for this example <a href="http://code.google.com/p/nov-framework/">here</a>.
</p>]]></description>
      <pubDate>Thu, 02 Sep 2010 14:10:12 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Gonzalo Ayuso's Blog: Using CouchDb as filesystem with PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/15061</guid>
      <link>http://www.phpdeveloper.org/news/15061</link>
      <description><![CDATA[<p>
In a new post to his blog <i>Gonzalo Ayuso</i> shows an interesting use for the CouchDB tool - using it <a href="http://gonzalo123.wordpress.com/2010/08/30/using-couchdb-as-filesystem-with-php/">as a filesystem</a> for cross-server handling of things like images or other binary resources.
</p>
<blockquote>
One of the problems I need to solve in my <a href="http://gonzalo123.wordpress.com/2010/07/27/clustering-php-applications-tips-and-hints/">clustered PHP applications</a> is where to store files. When I say files I'm not speaking about source code. I'm speaking about additional data files, such as download-able pdfs, logs, etc. Those files must be on every node of the cluster. [...] CouchDb has two great features to meet or requirements with this problem. It allows us to store files as attachments and it also allows to perform a great and very easy multi-master replica system.
</blockquote>
<p>
He shows how use <a href="http://gonzalo123.wordpress.com/2010/01/09/building-a-simple-http-client-with-php-a-rest-client/">two</a> <a href="http://gonzalo123.wordpress.com/2010/03/15/php-and-couchdb/">libraries</a> he's created to connect to the CouchDB instance and, based on <a href="http://gonzalo123.files.wordpress.com/2010/08/couchdb_fs1.png">this structure</a>, be able to insert the content - a text file in this case - pull it back out, get the meta data about it and even move it to another location in the structure.
</p>]]></description>
      <pubDate>Wed, 01 Sep 2010 13:41:12 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Gonzalo Ayuso's Blog: PHP and couchDB]]></title>
      <guid>http://www.phpdeveloper.org/news/14193</guid>
      <link>http://www.phpdeveloper.org/news/14193</link>
      <description><![CDATA[<p>
In a recent post to his blog <i>Gonzalo Ayuso</i> has a <a href="http://gonzalo123.wordpress.com/2010/03/15/php-and-couchdb/">brief introduction to CouchDB</a> and how you can use it in your application. Most of the post is made up of code samples showing some of the basic relational database operations translated over to a CouchDB database (found in <a href="http://code.google.com/p/nov-couchdb/">this class</a>).
</p>
<blockquote>
I come from relational database world. <a href="http://blog.oskarsson.nu/2009/06/nosql-debrief.html">NoSQL</a> is new for me. Maybe I'm wrong but I want to use INSERT, UPDATE, DELETE and SELECT statements in CouchDB in the same way I use them in Relational database. The class is focused in the HTTP Document API. There is a great tutorial here that explains the API. Now I'll show the interface I've made to perform the statements with CouchDB.
</blockquote>
<p>
There's examples of both simple and more complex selects, updates and deletes as well as the handling of exceptions via two types he's included support for - NoDataFound and DupValOnIndex.
</p>]]></description>
      <pubDate>Tue, 16 Mar 2010 13:55:22 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Matt Butche's Blog: MongoDB: 5 Things Every PHP Developer Should Know About MongoDB]]></title>
      <guid>http://www.phpdeveloper.org/news/14147</guid>
      <link>http://www.phpdeveloper.org/news/14147</link>
      <description><![CDATA[<p>
<i>Matt Butcher</i> has a new post to his blog today with five things that <a href="http://technosophos.com/content/mongodb-5-things-every-php-developer-should-know-about-mongodb">every PHP developer should know about MongoDB</a>, the popular NoSQL database project.
</p>
<blockquote>
2010 is the year of the document database. While momentum has been steadily building over the last seven years or so, there are now a wide variety of stable document databases -- from cloud-based ones from Amazon and Google, to a wide variety of Open Source tools, most notably <a href="http://couchdb.apache.org/">CouchDB</a> and <a href="http://www.mongodb.org/display/DOCS/Home">MongoDB</a>. So what is MongoDB? Here are five things every PHP developer should know about it.
</blockquote>
<p>
He points out a few things - that MongoDB is a stand-alone server, that it's schemaless, you won't need to learn another query language to use it and that PHP and MongoDB play very well together (thanks to the Mongo PECL package already released).
</p>]]></description>
      <pubDate>Mon, 08 Mar 2010 11:44:43 -0600</pubDate>
    </item>
  </channel>
</rss>

