<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Olle Jonsson&#039;s blog &#187; PHP</title>
	<atom:link href="http://ollehost.dk/blog/category/technology/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://ollehost.dk/blog</link>
	<description></description>
	<lastBuildDate>Tue, 22 May 2012 20:28:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>PHPUnit + Growl</title>
		<link>http://ollehost.dk/blog/2012/02/22/phpunit-growl/</link>
		<comments>http://ollehost.dk/blog/2012/02/22/phpunit-growl/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 01:57:33 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/?p=1060</guid>
		<description><![CDATA[Laurent built a Growl notifier for PHPUnit test results so that you can see red/green as a Growl notification on your Mac.]]></description>
			<content:encoded><![CDATA[<p><a href="http://php5.laurent-laville.org/phpunit/growlTestListener/">Laurent built a Growl notifier for PHPUnit test results</a> so that you can see red/green as a Growl notification on your Mac.</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2012/02/22/phpunit-growl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get pman: man pages for PHP functions</title>
		<link>http://ollehost.dk/blog/2012/02/16/get-pman/</link>
		<comments>http://ollehost.dk/blog/2012/02/16/get-pman/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 12:19:34 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/?p=1032</guid>
		<description><![CDATA[This link post is quite irrelevant should you never be using PHP. Therefore, I categorized it. Published in 2010, Unix manual pages for PHP functions is still a useful tip. A decade of using Python, and you don&#8217;t ask yourself &#8230; <a href="http://ollehost.dk/blog/2012/02/16/get-pman/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>This link post is quite irrelevant should you never be using PHP. Therefore, I categorized it.<br />
</em></p>
<p>Published in 2010, <a href="http://bjori.blogspot.com/2010/01/unix-manual-pages-for-php-functions.html" title="Bjori's blog in 2010">Unix manual pages for PHP functions</a> is still a useful tip.</p>
<p>A decade of using Python, and you don&#8217;t ask yourself where the argument goes in a function you use daily. Experienced PHP developers look at the php.net website quite a lot. Print cheatsheets (but never look at them, since the php.net website exists).</p>
<p>&#8220;There&#8217;s a quicker way.&#8221; You <a href="http://stackoverflow.com/questions/5752632/php-offline-documentation/5753094#5753094">look up a trick on the Internet</a>. In this case it was long-time PEAR committer <a href="http://cweiske.de/" title="Personal Homepage!!!">cweiske</a> who pointed this out.</p>
<p><code><br />
pear channel-discover doc.php.net<br />
pear channel-update doc.php.net<br />
pear install doc.php.net/pman<br />
</code></p>
<p>or, if your setup forces you to use sudo (for your copy-and-pasting pleasure):</p>
<p><code><br />
sudo pear channel-discover doc.php.net<br />
sudo pear channel-update doc.php.net<br />
sudo pear install doc.php.net/pman<br />
</code></p>
<p>This downloads five megabytes of PHP documentation, and a small command-line utility that fires up your text viewer.</p>
<p><strong>Result</strong>: any PHP function can be looked up locally, in your viewer: <code>pman strpos</code></p>
<p><a href="http://bjori.blogspot.com/">Thanks, Bjori</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2012/02/16/get-pman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Close and re-open tickets from tests: Fogbugz PHPUnit TicketListener</title>
		<link>http://ollehost.dk/blog/2011/01/21/fogbugz-phpunit-ticketlistener/</link>
		<comments>http://ollehost.dk/blog/2011/01/21/fogbugz-phpunit-ticketlistener/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 19:19:04 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[fogbugz]]></category>
		<category><![CDATA[phpunit]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/?p=950</guid>
		<description><![CDATA[When working with unit testing in PHP, you might already be using my favorite PHP unit testing tool PHPUnit. If you are, perhaps you&#8217;ve heard of the TicketListener interface. No? Then read on. Raphael Stolt closes GitHub issues from his &#8230; <a href="http://ollehost.dk/blog/2011/01/21/fogbugz-phpunit-ticketlistener/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When working with unit testing in PHP, you might already be using my favorite PHP unit testing tool <a href="http://phpunit.de">PHPUnit</a>. If you are, perhaps you&#8217;ve heard of the TicketListener interface. No? Then read on.</p>
<p><a href="http://raphaelstolt.blogspot.com/2010/01/closing-and-reopening-github-issues-via.html">Raphael Stolt closes GitHub issues from his PHPUnit tests.</a> Which is cool. He inspired me.</p>
<p>I wrote some code. <a href="https://github.com/olleolleolle/phpunit/blob/3.5/PHPUnit/Extensions/TicketListener/Fogbugz.php">You can now do the same from FogBugz</a>. (<a href="http://www.fogcreek.com/fogbugz/">FogBugz</a> is a commercial project management system that includes bug tracking.)</p>
<p>To install this, you can now just head over to the <a href="http://pear.phpunit.de/">PHPUnit PEAR channel</a>:</p>
<p><code>pear install phpunit/PHPUnit_TicketListener_Fogbugz</code></p>
<p><a href="http://ollehost.dk/blog/wp-content/uploads/ticketlistener_image.gif"><img src="http://ollehost.dk/blog/wp-content/uploads/ticketlistener_image.gif" alt="" title="ticketlistener_image" width="268" height="110" class="alignleft size-full wp-image-957" /></a></p>
<p><strong>Steps to do it</strong></p>
<p>Have a nice failing test that can re-open your ticket.</p>
<pre><code>
< ?
class ExampleClassTest extends PHPUnit_Framework_TestCase
{
    /**
     * @ticket 2
     * @test
     */
    function example() {
        $this->assertTrue(FALSE);
    }

}
</code></pre>
<p>Please note the annotation documentation block above the test method: it denotes that the method is a test, <strong>and that the issue with ID 2 should be re-opened if this test should ever fail</strong>.</p>
<p>Then, set up a continuous integration-specific PHPUnit configuration file (oh, why? Well, this extra checking against the bugs system takes time, and we don&#8217;t want to burden our test suite with that):</p>
<pre><code>
&lt;phpunit&gt;
  &lt;listeners&gt;
    &lt;listener class=&quot;PHPUnit_Extensions_TicketListener_Fogbugz&quot;
              file=&quot;../olleolleolle-phpunit/PHPUnit/Extensions/TicketListener/Fogbugz.php&quot;&gt;
      &lt;arguments&gt;
        &lt;string&gt;username@xstream.dk&lt;/string&gt;
        &lt;string&gt;secretpassword&lt;/string&gt;
        &lt;string&gt;http://fogbugz.example.org/api.php&lt;/string&gt;
        &lt;boolean&gt;false&lt;/boolean&gt;
        &lt;boolean&gt;true&lt;/boolean&gt;
        &lt;string&gt;Fixed&lt;/string&gt;
        &lt;string&gt;Started&lt;/string&gt;
      &lt;/arguments&gt;
    &lt;/listener&gt;
  &lt;/listeners&gt;
&lt;/phpunit&gt;
</code></pre>
<p>Run the PHPUnit test (or, more realistically, your whole test suite) with the specific configuration, like so:</p>
<pre><code>phpunit -ddisplay_errors=1 --configuration fogbugzlistener.xml ExampleClassTest</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2011/01/21/fogbugz-phpunit-ticketlistener/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Contribute: Low-hanging fruit in PEAR</title>
		<link>http://ollehost.dk/blog/2010/08/09/low-hanging-fruit-in-pear/</link>
		<comments>http://ollehost.dk/blog/2010/08/09/low-hanging-fruit-in-pear/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 08:36:27 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/?p=835</guid>
		<description><![CDATA[Here is a list of very simple bugs to fix, to make PEAR better: Deprecation bugs for PEAR code. I fixed two. The list was a wee bit shorter when I reloaded its tab. How many of these bugs remain?]]></description>
			<content:encoded><![CDATA[<p>Here is a list of very simple bugs to fix, to make <a href="http://pear.php.net">PEAR</a> better: <a href="http://test.pear.php.net/unit-test-results/deprecated.txt">Deprecation bugs for PEAR code</a>.</p>
<p>I fixed two. The list was a wee bit shorter when I reloaded its tab.</p>
<p><a href="http://ollehost.dk/media/pear-bugs/">How many of these bugs remain?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2010/08/09/low-hanging-fruit-in-pear/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thank you, MacPorts: How to add OpenSSL support to your PHP</title>
		<link>http://ollehost.dk/blog/2010/07/23/thank-you-macports-php5-ssl/</link>
		<comments>http://ollehost.dk/blog/2010/07/23/thank-you-macports-php5-ssl/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 07:43:29 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[macports]]></category>
		<category><![CDATA[thankyou]]></category>

		<guid isPermaLink="false">http://ollehost.dk/blog/?p=794</guid>
		<description><![CDATA[Many interesting web APIs require SSL, for instance Google&#8217;s GData API. This adds OpenSSL support to your MacPorts-installed PHP, so that you can use the &#8220;ssl&#8221; transport layer: sudo port install php5-openssl Done. Thanks, jmr_mp in the MacPorts IRC channel, &#8230; <a href="http://ollehost.dk/blog/2010/07/23/thank-you-macports-php5-ssl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Many interesting web APIs require SSL, for instance Google&#8217;s GData API. This adds OpenSSL support to your MacPorts-installed PHP, so that you can use the &#8220;ssl&#8221; transport layer:</p>
<p><tt>sudo port install php5-openssl</tt></p>
<p><em>Done.</em></p>
<p>Thanks, <tt>jmr_mp</tt> in the MacPorts IRC channel, for telling me about the existence of this short and neat patch-applying port, so that I could spare you, dear reader, from an introductory tutorial on how to edit Portfiles that don&#8217;t add the bells and whistles that you want. I had one written, but the above is saner. There&#8217;s always another hood underneath the hood. You don&#8217;t have to fix everything. Some things should just be fixed by the package system.</p>
<p>Here&#8217;s that Portfile:</p>
<pre>
$ port cat php5-openssl
# $Id: Portfile 69619 2010-07-11 03:00:23Z ryandesign@macports.org $

PortSystem              1.0
PortGroup               php5extension 1.0

php5extension.setup     openssl 5.3.2 bundled
revision                1
categories-append       devel security
platforms               darwin
maintainers             ryandesign

description             a PHP interface to OpenSSL signature-generation \
                        and -verification and data-encryption and \
                        -decryption functions

long_description        ${description}

checksums               md5     46f500816125202c48a458d0133254a4 \
                        sha1    79ea4ee3da3a7542d1e348ac963a5b38bcbb4b6b \
                        rmd160  60a8aac0d51511ecaf8dcad9d31bdf072c0c99cf

depends_lib-append      port:openssl

post-extract {
    move ${build.dir}/config0.m4 ${build.dir}/config.m4
}

configure.args-append   --with-openssl=${prefix}

platform macosx {
    configure.args-append --with-kerberos=/usr
}

use_parallel_build      yes
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2010/07/23/thank-you-macports-php5-ssl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP: grab only the data you need</title>
		<link>http://ollehost.dk/blog/2006/09/21/cakephp-optimization-hint/</link>
		<comments>http://ollehost.dk/blog/2006/09/21/cakephp-optimization-hint/#comments</comments>
		<pubDate>Thu, 21 Sep 2006 11:38:36 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://olle.ter.dk/blog/?p=304</guid>
		<description><![CDATA[When dealing with an abstraction that outputs dynamic SQL &#8220;behind your back&#8221;, it&#8217;s often easy to forget that some of the queries are&#8230; too greedy and grab unneeded data. Here is how to ask for less data, using CakePHP. Today, &#8230; <a href="http://ollehost.dk/blog/2006/09/21/cakephp-optimization-hint/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When dealing with an abstraction that outputs dynamic SQL &#8220;behind your back&#8221;, it&#8217;s often easy to forget that some of the queries are&#8230; too greedy and grab unneeded data. Here is how to ask for less data, using <a href="http://www.cakephp.org/">CakePHP</a>.</p>
<p>Today, I listed only name and id fields of a Model, and to restrict the <code>findAll()</code> to those things:</p>
<p><code style="white-space:normal;">
<pre style="overflow:auto;white-space:normal;">
`$data = $this->Thing->findAll( aa("Thing.user_id", $user_id), a("id", "name"), null, null, null, -1 );`
</pre>
<p></code></p>
<p>Breaking down the call, we have:</p>
<p><code>aa()</code> is a CakePHP convenience function to make an associative array. Odd parameters are keys, even params values. The parameters here creates a WHERE clause that matches the current user&#8217;s Things.</p>
<p><code>a()</code> does the same for regular arrays. The params list the two fields we need returned.</p>
<p>A couple of null settings, and then the crucial <code>-1</code>, which turns off the Model associations completely.</p>
<p>Grab less data!</p>
<p><b>Update:</b> here is how to use <code>unbindModel</code>. First take a look at the Thing model definition, courtesy of Mladen Mihajlovic:</p>
<pre><code>
<?php
// Our Thing model
class Thing extends Model {

  var $hasMany = array(
    ‘AnotherThing’ => array(
      ‘className’ => ‘AnotherThing’
    ),
    ‘SomeOtherThing’ => array(
      ‘className’ => ‘SomeOtherThing’
    ),
    ‘YetAnotherThing’ => array(
      ‘className’ => ‘YetAnotherThing’
    )
  );
}
?>
</code></pre>
<p>Now, in our controller, before calling <code>findAll</code>, we remove two of the associated Models:</p>
<p><code><br />
$this->Thing->unbindModel( array( "hasMany" => array( "AnotherThing", "SomeOtherThing" ) ) );<br />
</code></p>
<p>[tags]cakephp[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2006/09/21/cakephp-optimization-hint/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Calling an XML-RPC method (PHP, Ruby)</title>
		<link>http://ollehost.dk/blog/2006/09/15/calling-an-xml-rpc-method-php-ruby/</link>
		<comments>http://ollehost.dk/blog/2006/09/15/calling-an-xml-rpc-method-php-ruby/#comments</comments>
		<pubDate>Fri, 15 Sep 2006 14:21:07 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[technorati]]></category>
		<category><![CDATA[xmlrpc]]></category>

		<guid isPermaLink="false">http://olle.ter.dk/blog/?p=300</guid>
		<description><![CDATA[Calling web services. Great fun when it works. Thanks to XML-RPC&#8217;s simplicity, it&#8217;s quite easy to cobble together a working client. Here is me using the Technorati &#8220;ping&#8221; service, which tells them about the Copenhagen Ruby Brigade&#8217;s weblog being updated. &#8230; <a href="http://ollehost.dk/blog/2006/09/15/calling-an-xml-rpc-method-php-ruby/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Calling web services. Great fun when it works. Thanks to XML-RPC&#8217;s simplicity, it&#8217;s quite easy to cobble together a working client. Here is me using the Technorati &#8220;ping&#8221; service, which tells them about the <a href="http://copenhagenrb.dk/" title="Blog for Cph.rb">Copenhagen Ruby Brigade&#8217;s weblog</a> being updated. And then, prints the result.</p>
<p>My PHP take on this looks klutzy. But the request gets encoded smartly. cURL takes a lot parameters to get running. I write <a href="http://technorati.com/developers/ping/">the appropriate headers</a> myself, there.</p>
<p><a href="http://bigbold.com/snippets/posts/show/2596">Simple XML-RPC in PHP</a></p>
<p>In Ruby&#8217;s standard library, there is a library to do these things. Exciting.</p>
<p><a href="http://bigbold.com/snippets/posts/show/2597">Even simpler XML-RPC in Ruby</a></p>
<p>[tags]technorati,xmlrpc,ruby,php,curl[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2006/09/15/calling-an-xml-rpc-method-php-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>List of local geek communities (work-in-progress)</title>
		<link>http://ollehost.dk/blog/2006/09/14/list-of-local-geek-communities-work-in-progress/</link>
		<comments>http://ollehost.dk/blog/2006/09/14/list-of-local-geek-communities-work-in-progress/#comments</comments>
		<pubDate>Thu, 14 Sep 2006 12:33:54 +0000</pubDate>
		<dc:creator>olleolleolle</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://olle.ter.dk/blog/?p=299</guid>
		<description><![CDATA[I talked with a local PHP developer today, who&#8217;d seen my blog, and we talked some CakePHP, frameworks, servers, the general state of scripting languages, and so forth. And then we came to the subject of local communities, where developers &#8230; <a href="http://ollehost.dk/blog/2006/09/14/list-of-local-geek-communities-work-in-progress/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I talked with a local PHP developer today, who&#8217;d seen my blog, and we talked some CakePHP, frameworks, servers, the general state of scripting languages, and so forth. And then we came to the subject of local communities, where developers meet up and talk shop.</p>
<p>And, as a Copenhagener, I don&#8217;t know very much about that. There are these two that I know of:</p>
<ul>
<li><a href="http://forge.mysql.com/wiki/DenmarkUG">MySQL user group of Denmark</a></li>
<li><a href="http://copenhagenrb.dk/">Copenhagen Ruby Brigade</a></li>
<li><a href="http://sslug.dk/">SSLUG &#8212; Skane Sjaelland Linux User Group</a> &#8212; the crowd is so disparate that little &#8220;shop-talk&#8221; can be done effectively (embedded systems programmers meet Python users meet Ruby folks and PHP developers)</li>
<li><a href="http://www.ssrug.net/">Skåne Sjælland Ruby User Group</a>, gathering in Malmö or Lund</li>
</ul>
<p>Is there a PHP club? A Perl club? What other communities for developers have meetings in the Copenhagen area? Are you a member? Are these communities active? Please tell about it here.</p>
<ul>
<li><a href="http://copenhagen.pm.org/">Copenhagen Perl Mongers</a> seems to have had little activity after the summer</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2006/09/14/list-of-local-geek-communities-work-in-progress/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Drupal + CakePHP = Drake</title>
		<link>http://ollehost.dk/blog/2005/12/19/drupal-cakephp-drake/</link>
		<comments>http://ollehost.dk/blog/2005/12/19/drupal-cakephp-drake/#comments</comments>
		<pubDate>Mon, 19 Dec 2005 12:26:50 +0000</pubDate>
		<dc:creator>Olle Jonsson</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://olle.ter.dk/blog/?p=226</guid>
		<description><![CDATA[Tutorial for using Drupal and CakePHP together, written by Felix Geisendörfer. A match made in heaven?]]></description>
			<content:encoded><![CDATA[<p><a href="http://drake.kdz-online.de/drake/tutorial">Tutorial for using Drupal and CakePHP together</a>, written by Felix Geisendörfer.</p>
<p>A match made in heaven?</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2005/12/19/drupal-cakephp-drake/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CakePHP news: Data Bindings v0.1 Example</title>
		<link>http://ollehost.dk/blog/2005/11/22/cakephp-news-data-bindings-v01-example/</link>
		<comments>http://ollehost.dk/blog/2005/11/22/cakephp-news-data-bindings-v01-example/#comments</comments>
		<pubDate>Tue, 22 Nov 2005 13:01:57 +0000</pubDate>
		<dc:creator>Olle Jonsson</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[olleolleolle]]></category>

		<guid isPermaLink="false">http://olle.ter.dk/blog/?p=216</guid>
		<description><![CDATA[You might know that I am involved in the [CakePHP framework](http://www.cakephp.org/) project, and I&#8217;m developing web sites with it now. On the IRC channel today, I was alerted to the existence of the Bindings sister project. Now they have an &#8230; <a href="http://ollehost.dk/blog/2005/11/22/cakephp-news-data-bindings-v01-example/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>You might know that I am involved in the [CakePHP framework](http://www.cakephp.org/) project, and I&#8217;m developing web sites with it now.</p>
<p>On the IRC channel today, I was alerted to the existence of the Bindings sister project. Now they have an example up, for all to see. <a href="http://interfacethis.com/cake/bindings/example/">Data Bindings v0.1 Example</a> is a piece of very easy interaction between your PHP and the HTML the user manipulates. </p>
<p>Take a look at the &#8220;color box&#8221; example &#8211; yummy.</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2005/11/22/cakephp-news-data-bindings-v01-example/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

