<?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>A human weblog about Web technology and other ephemera</description>
	<lastBuildDate>Mon, 06 Feb 2012 09:22:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<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>1</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>
		<item>
		<title>Cake PHP framework in alpha</title>
		<link>http://ollehost.dk/blog/2005/10/27/cake-php-framework-in-alpha/</link>
		<comments>http://ollehost.dk/blog/2005/10/27/cake-php-framework-in-alpha/#comments</comments>
		<pubDate>Thu, 27 Oct 2005 09:40:39 +0000</pubDate>
		<dc:creator>Olle Jonsson</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[olleolleolle]]></category>

		<guid isPermaLink="false">http://olle.ter.dk/blog/?p=196</guid>
		<description><![CDATA[Release announcement for &#8220;cake_0.10.0.1217_alpha&#8221;, which is more stable than any other release. Most of all, this release is about making the developer experience more cohesive, and &#8220;orthogonal&#8221;. Method calls and return values look more or less the same everywhere, and &#8230; <a href="http://ollehost.dk/blog/2005/10/27/cake-php-framework-in-alpha/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://groups.google.com/group/cake-php/browse_frm/thread/ea682747a6952f0f/54157213a928f759#54157213a928f759">Release announcement</a> for &#8220;cake_0.10.0.1217_alpha&#8221;, which is more stable than any other release. </p>
<p>Most of all, this release is about making the developer experience more cohesive, and &#8220;orthogonal&#8221;. Method calls and return values look more or less the same everywhere, and when you grok how Cake hangs together, it becomes easier to make web apps.</p>
<p>I am becoming a bit more expressive with it.</p>
<p>I looked at Perl yesterday, using my Linux laptop. Without perldoc or man pages, it&#8217;s difficult broaching a new programming language. When there&#8217;s no editor with emacs keybindings, it gets harder. Vi is hard for me. Playing Nethack&#8217;s been making it easier lately. I know how to navigate, and the modefulness is becoming less of an enigma. But still, it ain&#8217;t like emacs yet. I&#8217;m used to <code><a href="http://www.jedsoft.org/jed/">jed</a></code>, a lightweight editor with emacs bindings. (It&#8217;s a Debian package, so just <code>apt-get</code> it. That&#8217;s what I should do, when I get that laptop online again.)</p>
<p>Now, see you. Been nice writing for you.</p>
<p>Update: just installed the Windows binary for jed. It&#8217;s cute, and it&#8217;s a lot faster to work with than a terminal window on a remote computer. I don&#8217;t know yet if I&#8217;ll use it locally. </p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2005/10/27/cake-php-framework-in-alpha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PEAR news: Validate_DK validates Danish numbers</title>
		<link>http://ollehost.dk/blog/2005/10/10/pear-news-validate_dk-validates-danish-numbers/</link>
		<comments>http://ollehost.dk/blog/2005/10/10/pear-news-validate_dk-validates-danish-numbers/#comments</comments>
		<pubDate>Mon, 10 Oct 2005 08:39:54 +0000</pubDate>
		<dc:creator>Olle Jonsson</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[olleolleolle]]></category>

		<guid isPermaLink="false">http://olle.ter.dk/blog/?p=191</guid>
		<description><![CDATA[Rejoice! A PEAR class for Danish numbers is now in alpha: Docs For Class Validate_DK are sparse, but you can see the four methods: * carReg * phoneNumber * postalCode * ssn I like this. One person, in this case &#8230; <a href="http://ollehost.dk/blog/2005/10/10/pear-news-validate_dk-validates-danish-numbers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Rejoice! A PEAR class for Danish numbers is now in alpha: <a href="http://pear.php.net/package/Validate_DK/docs/latest/Validate_DK/Validate_DK.html">Docs For Class Validate_DK</a> are sparse, but you can see the four methods: </p>
<p>*  carReg<br />
* phoneNumber<br />
* postalCode<br />
* ssn</p>
<p>I like this. One person, in this case Jesper Veggerby Hansen, can make a significant contribution to the Open Source world. [An article](http://asay.blogspot.com/2005/09/analyst-nature-and-size-of-open-source.html) I read yesterday told the real story: most projects involve few minds. If you  are able to add something (a fine bug report or a piece of documentation), you are golden.</p>
<p>Cheers to Jesper for this micro-project.</p>
]]></content:encoded>
			<wfw:commentRss>http://ollehost.dk/blog/2005/10/10/pear-news-validate_dk-validates-danish-numbers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

