<?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>Wed, 22 May 2013 01:06:26 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Thomas Hunter: CouchDB and PHP Web Development (Book Review)]]></title>
      <guid>http://www.phpdeveloper.org/news/18522</guid>
      <link>http://www.phpdeveloper.org/news/18522</link>
      <description><![CDATA[<p>
<i>Thomas Hunter</i> has posted a (nice long) <a href="http://thomashunter.name/blog/book-review-couchdb-and-php-web-development-beginners-guide/">book review</a> of the Packt Publishing book "CouchDB and PHP Web Development" to his site. 
</p>
<blockquote>
When I first picked up this book, I was expecting a boring, text-book approach to code examples for PHP talking with CouchDB. Boy was I wrong. What I found was a book that has you build a complete working application. And by complete, I mean you'll add the Twitter Bootstrap framework and it will be sexy. 
</blockquote>
<p>
He mentions parts of the app you'll create - a PHP framework, 3rd party libraries, working with git/github - and goes through the sections of the book, talking about good and bad points along the way. Chapters cover things like: an introduction to NoSQL, REST/HTTP verbs, installation/config of CouchDB, using version control and deploying the app using the <a href="https://phpfog.com/">PHPFog</a> PaaS hosting.
</p>]]></description>
      <pubDate>Wed, 26 Sep 2012 10:20:18 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Gonzalo Ayuso: Book review: CouchDB and PHP Web Development]]></title>
      <guid>http://www.phpdeveloper.org/news/18330</guid>
      <link>http://www.phpdeveloper.org/news/18330</link>
      <description><![CDATA[<p>
<i>Gonzalo Ayuso</i> has <a href="http://gonzalo123.wordpress.com/2012/08/07/book-review-couchdb-and-php-web-development/">posted a book review</a> of a Packt Publishing book "CouchDB and PHP Web Development":
</p>
<blockquote>
Finally the new Book "CouchDB and PHP Web Development" written by Tim Juravich is ready an in my hands. It was my first experience as technical reviewer. The author contacted me by email and the editor sent me book chapters to review. Basically I gave my opinion, I test the code and I hunt for bugs. It was a great experience. Now is really cool to see the book in my hands.
</blockquote>
<p>
Overall, he gives it a positive review (for a beginner level book) and points out a few things that can help make the reading experience better, like the "Time for Action" sections. He also was happy with the author's choice of using the Twitter Bootstrap for the interface of the sample application.
</p>]]></description>
      <pubDate>Wed, 08 Aug 2012 08:16:48 -0500</pubDate>
    </item>
    <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>
  </channel>
</rss>
