<?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>phly, boy, phly (Entries tagged as best practices)</title>
    <link>http://weierophinney.net/matthew/</link>
    <description>Ramblings on PHP, Linux, and other Geeky Topics</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.0.4 - http://www.s9y.org/</generator>
    <pubDate>Sat, 21 Aug 2010 22:37:14 GMT</pubDate>

    <image>
        <url>http://weierophinney.net/matthew/templates/matthew/img/s9y_banner_small.png</url>
        <title>RSS: phly, boy, phly - Ramblings on PHP, Linux, and other Geeky Topics</title>
        <link>http://weierophinney.net/matthew/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Autoloading Benchmarks</title>
    <link>http://weierophinney.net/matthew/archives/245-Autoloading-Benchmarks.html</link>
            <category>PHP</category>
    
    <comments>http://weierophinney.net/matthew/archives/245-Autoloading-Benchmarks.html#comments</comments>
    <wfw:comment>http://weierophinney.net/matthew/wfwcomment.php?cid=245</wfw:comment>

    <slash:comments>39</slash:comments>
    <wfw:commentRss>http://weierophinney.net/matthew/rss.php?version=2.0&amp;type=comments&amp;cid=245</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;
During the past week, I&#039;ve been looking at different strategies for &lt;a href=&quot;http://php.net/autoload&quot;&gt;autoloading&lt;/a&gt; in &lt;a href=&quot;http://framework.zend.com/&quot;&gt;Zend Framework&lt;/a&gt;. I&#039;ve suspected for some time that our class loading strategy might be one source of performance degradation, and wanted to research some different approaches, and compare performance.
&lt;/p&gt;

&lt;p&gt;
In this post, I&#039;ll outline the approaches I&#039;ve tried, the benchmarking stategy I applied, and the results of benchmarking each approach.
&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://weierophinney.net/matthew/archives/245-Autoloading-Benchmarks.html#extended&quot;&gt;Continue reading &quot;Autoloading Benchmarks&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 17 Aug 2010 09:30:00 -0400</pubDate>
    <guid isPermaLink="false">http://weierophinney.net/matthew/archives/245-guid.html</guid>
    <category>best practices</category>
<category>pear</category>
<category>php</category>
<category>zend framework</category>

</item>
<item>
    <title>Model Infrastructure</title>
    <link>http://weierophinney.net/matthew/archives/202-Model-Infrastructure.html</link>
            <category>PHP</category>
    
    <comments>http://weierophinney.net/matthew/archives/202-Model-Infrastructure.html#comments</comments>
    <wfw:comment>http://weierophinney.net/matthew/wfwcomment.php?cid=202</wfw:comment>

    <slash:comments>83</slash:comments>
    <wfw:commentRss>http://weierophinney.net/matthew/rss.php?version=2.0&amp;type=comments&amp;cid=202</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;
    In the last two entries in this series on models, I covered 
    &lt;a href=&quot;http://weierophinney.net/matthew/archives/200-Using-Zend_Form-in-Your-Models.html&quot;&gt;using forms as input filters&lt;/a&gt; 
    and &lt;a href=&quot;http://weierophinney.net/matthew/archives/201-Applying-ACLs-to-Models.html&quot;&gt;integrating ACLs into models&lt;/a&gt;. 
    In this entry, I tackle some potential infrastructure for your models.
&lt;/p&gt;

&lt;p&gt;
    The Model is a complex subject. However, it is often boiled down to either a
    single model class or a full object relational mapping (ORM). I personally
    have never been much of a fan of ORMs as they tie models to the underlying
    database structure; I don&#039;t always use a database, nor do I want
    to rely on an ORM solution too heavily on the off-chance that I later need
    to refactor to use services or another type of persistence store. On the
    other hand, the model as a single class is typically too simplistic.
&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://weierophinney.net/matthew/archives/202-Model-Infrastructure.html#extended&quot;&gt;Continue reading &quot;Model Infrastructure&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 30 Dec 2008 07:35:01 -0500</pubDate>
    <guid isPermaLink="false">http://weierophinney.net/matthew/archives/202-guid.html</guid>
    <category>best practices</category>
<category>mvc</category>
<category>php</category>
<category>zend framework</category>

</item>
<item>
    <title>Autocompletion with Zend Framework and Dojo</title>
    <link>http://weierophinney.net/matthew/archives/198-Autocompletion-with-Zend-Framework-and-Dojo.html</link>
            <category>Dojo</category>
            <category>PHP</category>
    
    <comments>http://weierophinney.net/matthew/archives/198-Autocompletion-with-Zend-Framework-and-Dojo.html#comments</comments>
    <wfw:comment>http://weierophinney.net/matthew/wfwcomment.php?cid=198</wfw:comment>

    <slash:comments>21</slash:comments>
    <wfw:commentRss>http://weierophinney.net/matthew/rss.php?version=2.0&amp;type=comments&amp;cid=198</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;
    I&#039;ve fielded several questions about setting up an autocompleter with
    &lt;a href=&quot;http://framework.zend.com/&quot;&gt;Zend Framework&lt;/a&gt; and
    &lt;a href=&quot;http://dojotoolkit.org/&quot;&gt;Dojo&lt;/a&gt;, and decided it was time to
    create a HOWTO on the subject, particularly as there are some nuances you
    need to pay attention to.
&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://weierophinney.net/matthew/archives/198-Autocompletion-with-Zend-Framework-and-Dojo.html#extended&quot;&gt;Continue reading &quot;Autocompletion with Zend Framework and Dojo&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 12 Dec 2008 11:07:29 -0500</pubDate>
    <guid isPermaLink="false">http://weierophinney.net/matthew/archives/198-guid.html</guid>
    <category>best practices</category>
<category>dojo</category>
<category>php</category>
<category>zend framework</category>

</item>
<item>
    <title>Tidings of the Season</title>
    <link>http://weierophinney.net/matthew/archives/196-Tidings-of-the-Season.html</link>
            <category>Dojo</category>
            <category>PHP</category>
    
    <comments>http://weierophinney.net/matthew/archives/196-Tidings-of-the-Season.html#comments</comments>
    <wfw:comment>http://weierophinney.net/matthew/wfwcomment.php?cid=196</wfw:comment>

    <slash:comments>7</slash:comments>
    <wfw:commentRss>http://weierophinney.net/matthew/rss.php?version=2.0&amp;type=comments&amp;cid=196</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;
    Just about every day, I have an idea for a blog post, and most days, by the
    end of the day, I just don&#039;t have the time or energy to actually write
    anything up. The inner writer in me screams, &quot;no excuses!&quot; while the aging
    adult in me whispers, &quot;time for bed, dear.&quot;
&lt;/p&gt;

&lt;p&gt;
    So, to keep my hand in the game, here are a few things running through my
    head, or that I&#039;m working on, or that I&#039;ll be doing soon.
&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://weierophinney.net/matthew/archives/196-Tidings-of-the-Season.html#extended&quot;&gt;Continue reading &quot;Tidings of the Season&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 02 Dec 2008 22:07:13 -0500</pubDate>
    <guid isPermaLink="false">http://weierophinney.net/matthew/archives/196-guid.html</guid>
    <category>best practices</category>
<category>conferences</category>
<category>dojo</category>
<category>php</category>
<category>zend framework</category>

</item>
<item>
    <title>ZendCon08 Wrapup</title>
    <link>http://weierophinney.net/matthew/archives/192-ZendCon08-Wrapup.html</link>
            <category>Dojo</category>
            <category>PHP</category>
    
    <comments>http://weierophinney.net/matthew/archives/192-ZendCon08-Wrapup.html#comments</comments>
    <wfw:comment>http://weierophinney.net/matthew/wfwcomment.php?cid=192</wfw:comment>

    <slash:comments>9</slash:comments>
    <wfw:commentRss>http://weierophinney.net/matthew/rss.php?version=2.0&amp;type=comments&amp;cid=192</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;
    I&#039;m a bit late on my &lt;a href=&quot;http://www.zendcon.com/&quot;&gt;ZendCon&#039;08&lt;/a&gt;
    wrapup; the conference left me both exhausted and with a backlog of email
    and work that has consumed me since it ended. However, this, too, is good,
    as it has given me time to reflect... and to finally get my slides up on
    SlideShare.
&lt;/p&gt;

&lt;p&gt;
    ZendCon was alternately exhausting, rewarding, educational, fruitful,
    infurating, and ultimately wonderful. I&#039;ve been to every single ZendCon so
    far -- I started at Zend a scant month before the inaugural event -- and
    have spoken at each. My first time speaking was a fluke; 
    &lt;a href=&quot;http://www.sklar.com/&quot;&gt;David Sklar&lt;/a&gt; had just started at 
    &lt;a href=&quot;http://www.ning.com/&quot;&gt;Ning&lt;/a&gt; and had to back out of his
    &quot;Configuring PHP&quot; tutorial session. 
    &lt;a href=&quot;http://mikenaberezny.com/&quot;&gt;Mike Naberezny&lt;/a&gt; and I were drafted to
    take it over, and we had N+1 attendees, where N was the number of speakers.
    Since that inauspicious beginning, I&#039;ve gradually taken on more sessions and
    stuck around to participate in the conference more. I can honestly say that
    this was the biggest, busiest, and most community focussed ZendCon I can
    remember.
&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://weierophinney.net/matthew/archives/192-ZendCon08-Wrapup.html#extended&quot;&gt;Continue reading &quot;ZendCon08 Wrapup&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 25 Sep 2008 23:11:30 -0400</pubDate>
    <guid isPermaLink="false">http://weierophinney.net/matthew/archives/192-guid.html</guid>
    <category>best practices</category>
<category>conferences</category>
<category>dojo</category>
<category>php</category>
<category>zencon08</category>
<category>zend framework</category>

</item>
<item>
    <title>git-svn Tip: don't use core.autocrlf</title>
    <link>http://weierophinney.net/matthew/archives/191-git-svn-Tip-dont-use-core.autocrlf.html</link>
            <category>Programming</category>
    
    <comments>http://weierophinney.net/matthew/archives/191-git-svn-Tip-dont-use-core.autocrlf.html#comments</comments>
    <wfw:comment>http://weierophinney.net/matthew/wfwcomment.php?cid=191</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://weierophinney.net/matthew/rss.php?version=2.0&amp;type=comments&amp;cid=191</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;
    I&#039;ve been playing around with &lt;a href=&quot;http://git.or.cz/&quot;&gt;Git&lt;/a&gt; in the 
    past couple months, and have been really enjoying it. Paired with
    subversion, I get the best of all worlds -- distributed source control when
    I want it (working on new features or trying out performance tuning), and
    non-distributed source control for my public commits.
&lt;/p&gt;

&lt;p&gt;
    &lt;a href=&quot;http://github.com/guides/dealing-with-newlines-in-git&quot;&gt;Github&lt;/a&gt; 
    suggests that when working with remote repositories, you turn on the
    autocrlf option, which ensures that changes in line endings do not get
    accounted for when pushing to and pulling from the remote repo.  However,
    when working with git-svn, this actually causes issues. After turning this
    option on, I started getting the error &quot;Delta source ended unexpectedly&quot;
    from git-svn. After a bunch of aimless tinkering, I finally asked myself the
    questions, &quot;When did this start happening?&quot; and, &quot;Have I changed anything
    with Git lately?&quot; Once I&#039;d backed out the config change, all started working
    again.
&lt;/p&gt;

&lt;p&gt;
    In summary: don&#039;t use &quot;git config --global core.autocrlf true&quot; when using
    git-svn.
&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Wed, 24 Sep 2008 12:16:27 -0400</pubDate>
    <guid isPermaLink="false">http://weierophinney.net/matthew/archives/191-guid.html</guid>
    <category>best practices</category>
<category>git</category>
<category>programming</category>
<category>subversion</category>

</item>
<item>
    <title>Setting up your Zend_Test test suites</title>
    <link>http://weierophinney.net/matthew/archives/190-Setting-up-your-Zend_Test-test-suites.html</link>
            <category>PHP</category>
    
    <comments>http://weierophinney.net/matthew/archives/190-Setting-up-your-Zend_Test-test-suites.html#comments</comments>
    <wfw:comment>http://weierophinney.net/matthew/wfwcomment.php?cid=190</wfw:comment>

    <slash:comments>43</slash:comments>
    <wfw:commentRss>http://weierophinney.net/matthew/rss.php?version=2.0&amp;type=comments&amp;cid=190</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;
    Now that &lt;a href=&quot;http://framework.zend.com/manual/en/zend.test.html&quot;&gt;Zend_Test&lt;/a&gt;
    has shipped, developers are of course asking, &quot;How do I setup my test
    suite?&quot; Fortunately, after some discussion with my colleagues and a little
    experimenting on my one, I can answer that now.
&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://weierophinney.net/matthew/archives/190-Setting-up-your-Zend_Test-test-suites.html#extended&quot;&gt;Continue reading &quot;Setting up your Zend_Test test suites&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 11 Sep 2008 15:00:00 -0400</pubDate>
    <guid isPermaLink="false">http://weierophinney.net/matthew/archives/190-guid.html</guid>
    <category>best practices</category>
<category>mvc</category>
<category>oop</category>
<category>php</category>
<category>testing</category>
<category>zend framework</category>

</item>
<item>
    <title>Testing Zend Framework MVC Applications</title>
    <link>http://weierophinney.net/matthew/archives/182-Testing-Zend-Framework-MVC-Applications.html</link>
            <category>PHP</category>
    
    <comments>http://weierophinney.net/matthew/archives/182-Testing-Zend-Framework-MVC-Applications.html#comments</comments>
    <wfw:comment>http://weierophinney.net/matthew/wfwcomment.php?cid=182</wfw:comment>

    <slash:comments>51</slash:comments>
    <wfw:commentRss>http://weierophinney.net/matthew/rss.php?version=2.0&amp;type=comments&amp;cid=182</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;
    Since I originally started hacking on the &lt;a
    href=&quot;http://framework.zend.com/&quot;&gt;Zend Framework&lt;/a&gt; MVC in the fall of
    2006, I&#039;ve been touting the fact that you can test ZF MVC projects by
    utilizing the Request and Response objects; indeed, this is what I actually
    did to test the Front Controller and Dispatcher. However, until recently,
    there was never an easy way to do so in your userland projects; the default
    request and response objects make it difficult to easily and quickly setup
    tests, and the methods introduced into the front controller to make it
    testable are largely undocumented. 
&lt;/p&gt;

&lt;p&gt;
    So, one of my ongoing projects the past few months has been to create an
    infrastructure for functional testing of ZF projects using &lt;a
        href=&quot;http://phpunit.de/&quot;&gt;PHPUnit&lt;/a&gt;. This past weekend, I made the
    final commits that make this functionality feature complete.
&lt;/p&gt;

&lt;p&gt;
    The new functionality provides several facets:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Stub test case classes for the HTTP versions of our Request and Response
        objects, containing methods for setting up the request environment
        (including setting GET, POST, and COOKIE parameters, HTTP request
        headers, etc).&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;Zend_Dom_Query&lt;/code&gt;, a class for using CSS selectors (and XPath)
        to query (X)HTML and XML documents.&lt;/li&gt;
    &lt;li&gt;PHPUnit constraints that consume &lt;code&gt;Zend_Dom_Query&lt;/code&gt; and the
        Response object to make their comparisons.&lt;/li&gt;
    &lt;li&gt;A specialized PHPUnit test case that contains functionality for
        bootstrapping an MVC application, dispatching requests, and a variety of
        assertions that utilize the above constraints and objects.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;a href=&quot;http://weierophinney.net/matthew/archives/182-Testing-Zend-Framework-MVC-Applications.html#extended&quot;&gt;Continue reading &quot;Testing Zend Framework MVC Applications&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 30 Jun 2008 12:00:00 -0400</pubDate>
    <guid isPermaLink="false">http://weierophinney.net/matthew/archives/182-guid.html</guid>
    <category>best practices</category>
<category>mvc</category>
<category>php</category>
<category>zend framework</category>

</item>
<item>
    <title>Migrating OOP Libraries and Frameworks to PHP 5.3</title>
    <link>http://weierophinney.net/matthew/archives/181-Migrating-OOP-Libraries-and-Frameworks-to-PHP-5.3.html</link>
            <category>PHP</category>
    
    <comments>http://weierophinney.net/matthew/archives/181-Migrating-OOP-Libraries-and-Frameworks-to-PHP-5.3.html#comments</comments>
    <wfw:comment>http://weierophinney.net/matthew/wfwcomment.php?cid=181</wfw:comment>

    <slash:comments>58</slash:comments>
    <wfw:commentRss>http://weierophinney.net/matthew/rss.php?version=2.0&amp;type=comments&amp;cid=181</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;
    With PHP 5.3 coming up on the horizon, I&#039;m of course looking forward to
    using namespaces. Let&#039;s be honest, who wants to write the following line?
&lt;/p&gt;

&lt;div class=&quot;php&quot; style=&quot;text-align: left&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$viewRenderer&lt;/span&gt; = Zend_Controller_Action_HelperBroker::&lt;span style=&quot;color: #006600;&quot;&gt;getStaticHelper&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;viewRenderer&#039;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&lt;/div&gt;

&lt;p&gt;
    when the more succinct:
&lt;/p&gt;

&lt;div class=&quot;php&quot; style=&quot;text-align: left&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$viewRenderer&lt;/span&gt; = HelperBroker::&lt;span style=&quot;color: #006600;&quot;&gt;getStaticHelper&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;viewRenderer&#039;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&lt;/div&gt;

&lt;p&gt;
    could be used? (Assuming you&#039;ve executed &lt;code&gt;&#039;use
    Zend::Controller::Action;&#039;&lt;/code&gt; somewhere earlier...)
&lt;/p&gt;

&lt;p&gt;
    However, while namespaces will hopefully lead to more readable code,
    particularly code in libraries and frameworks, PHP developers will finally
    need to start thinking about sane standards for abstract classes and
    interfaces. 
&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://weierophinney.net/matthew/archives/181-Migrating-OOP-Libraries-and-Frameworks-to-PHP-5.3.html#extended&quot;&gt;Continue reading &quot;Migrating OOP Libraries and Frameworks to PHP 5.3&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 30 Jun 2008 09:00:00 -0400</pubDate>
    <guid isPermaLink="false">http://weierophinney.net/matthew/archives/181-guid.html</guid>
    <category>best practices</category>
<category>oop</category>
<category>php</category>
<category>zend framework</category>

</item>
<item>
    <title>Speaking at the Dutch PHP Conference</title>
    <link>http://weierophinney.net/matthew/archives/175-Speaking-at-the-Dutch-PHP-Conference.html</link>
            <category>PHP</category>
    
    <comments>http://weierophinney.net/matthew/archives/175-Speaking-at-the-Dutch-PHP-Conference.html#comments</comments>
    <wfw:comment>http://weierophinney.net/matthew/wfwcomment.php?cid=175</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://weierophinney.net/matthew/rss.php?version=2.0&amp;type=comments&amp;cid=175</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;
    I&#039;ve known for some time, but was reluctant to blog about it until the plane
    tickets were purchased and in hand: I&#039;ve been invited to speak at the 
    &lt;a href=&quot;http://phpconference.nl/&quot;&gt;Dutch PHP Conference&lt;/a&gt; this coming
    June:
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;&lt;img src=&quot;http://phpconference.nl/img/dpc08/logoDPC08_small.png&quot; alt=&quot;DPC&quot; height=&quot;149&quot; width=&quot;217&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
    I&#039;ll be presenting two separate sessions: 
    &lt;a href=&quot;http://phpconference.nl/workshops/&quot;&gt;an all day tutorial&lt;/a&gt; 
    on 13 June 2008 covering Zend Framework, and a regular session on 14 June
    2008 covering 
    &lt;a href=&quot;http://phpconference.nl/schedule/bestpractices&quot;&gt;Best Practices for PHP development&lt;/a&gt;, 
    which will focus on how to utilize Zend Framework coding standards and
    methodologies to help deliver efficient, high quality code for your
    organization.
&lt;/p&gt;

&lt;p&gt;
    I&#039;m looking forward to meeting old and new friends alike at the conference!
&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sun, 18 May 2008 15:08:33 -0400</pubDate>
    <guid isPermaLink="false">http://weierophinney.net/matthew/archives/175-guid.html</guid>
    <category>best practices</category>
<category>conferences</category>
<category>php</category>
<category>zend framework</category>

</item>
<item>
    <title>Vim Productivity Tips for PHP Developers</title>
    <link>http://weierophinney.net/matthew/archives/164-Vim-Productivity-Tips-for-PHP-Developers.html</link>
            <category>PHP</category>
    
    <comments>http://weierophinney.net/matthew/archives/164-Vim-Productivity-Tips-for-PHP-Developers.html#comments</comments>
    <wfw:comment>http://weierophinney.net/matthew/wfwcomment.php?cid=164</wfw:comment>

    <slash:comments>28</slash:comments>
    <wfw:commentRss>http://weierophinney.net/matthew/rss.php?version=2.0&amp;type=comments&amp;cid=164</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;
    I use &lt;a href=&quot;http://www.vim.org/&quot;&gt;Vim&lt;/a&gt; for all my editing needs -- TODO
    lists, email, presentation outlines, coding in any language... everything.
    So, I thought I&#039;d start sharing some of my vim habits and tools with others,
    particularly those that pertain to using Vim with PHP.
&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://weierophinney.net/matthew/archives/164-Vim-Productivity-Tips-for-PHP-Developers.html#extended&quot;&gt;Continue reading &quot;Vim Productivity Tips for PHP Developers&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 22 Mar 2008 10:41:26 -0400</pubDate>
    <guid isPermaLink="false">http://weierophinney.net/matthew/archives/164-guid.html</guid>
    <category>best practices</category>
<category>php</category>
<category>vim</category>

</item>
<item>
    <title>Submitting Bug Reports</title>
    <link>http://weierophinney.net/matthew/archives/161-Submitting-Bug-Reports.html</link>
            <category>PHP</category>
            <category>Programming</category>
    
    <comments>http://weierophinney.net/matthew/archives/161-Submitting-Bug-Reports.html#comments</comments>
    <wfw:comment>http://weierophinney.net/matthew/wfwcomment.php?cid=161</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://weierophinney.net/matthew/rss.php?version=2.0&amp;type=comments&amp;cid=161</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;
    Full disclosure: I am employed by &lt;a href=&quot;http://www.zend.com/&quot;&gt;Zend&lt;/a&gt; to
    program &lt;a href=&quot;http://framework.zend.com/&quot;&gt;Zend Framework&lt;/a&gt;. That said,
    the following is all my opinion, and is based on my experiences with Zend
    Framework, as well as answering questions on a variety of mailing lists and
    with other OSS projects (PEAR, Solar, and Cgiapp in particular).
&lt;/p&gt;

&lt;p&gt;
    One of my biggest pet peeves in the OSS world is vague bug/issue reports and feature requests. I
    cannot count the number of times I&#039;ve seen a report similar to the following:
&lt;/p&gt;

&lt;blockquote&gt;
    &amp;lt;Feature X&amp;gt; doesn&#039;t work; you need to fix it &lt;b&gt;now!&lt;/b&gt;
&lt;/blockquote&gt;

&lt;p&gt;
    If such a report comes in on an issue tracker, it&#039;s invariably marked
    critical and high priority.
&lt;/p&gt;

&lt;p&gt;
    What bothers me about it? Simply this: it gives those responsible for
    maintaining Feature X absolutely no information to work on: what result they
    received, what was expected, or how exactly they were using the feature. The
    reviewer now has to go into one or more cycles with the reporter fishing for
    that information -- wasting everyone&#039;s time and energy.
&lt;/p&gt;

&lt;p&gt;
    Only slightly better are these reports:
&lt;/p&gt;

&lt;blockquote&gt;
    &amp;lt;Feature X&amp;gt; doesn&#039;t work -- I keep getting &amp;lt;Result X&amp;gt; from it,
    which is incorrect.
&lt;/blockquote&gt;

&lt;p&gt;
    At least this tells the reviewers what they reporter is receiving... but it
    doesn&#039;t tell them how they got there, or what they&#039;re expecting.
&lt;/p&gt;

&lt;p&gt;
    So, the following should be your mantra when reporting issues or making feature requests:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;What is the minimum code necessary to reproduce the issue or show the desired API?&lt;/li&gt;
    &lt;li&gt;What is the expected result?&lt;/li&gt;
    &lt;li&gt;What is the actual result?&lt;/li&gt;
&lt;/ul&gt;
 &lt;br /&gt;&lt;a href=&quot;http://weierophinney.net/matthew/archives/161-Submitting-Bug-Reports.html#extended&quot;&gt;Continue reading &quot;Submitting Bug Reports&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 08 Mar 2008 12:06:13 -0500</pubDate>
    <guid isPermaLink="false">http://weierophinney.net/matthew/archives/161-guid.html</guid>
    <category>best practices</category>
<category>php</category>
<category>programming</category>

</item>
<item>
    <title>2007 Retrospective</title>
    <link>http://weierophinney.net/matthew/archives/154-2007-Retrospective.html</link>
            <category>Personal</category>
            <category>PHP</category>
            <category>Programming</category>
    
    <comments>http://weierophinney.net/matthew/archives/154-2007-Retrospective.html#comments</comments>
    <wfw:comment>http://weierophinney.net/matthew/wfwcomment.php?cid=154</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://weierophinney.net/matthew/rss.php?version=2.0&amp;type=comments&amp;cid=154</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;
    2007 was a busy year, both personally and professionally. I won&#039;t go into
    the personal too much, because, well, it&#039;s personal, and some of the details
    are simply inappropriate for blogging material.
&lt;/p&gt;

&lt;p&gt;
    Here&#039;s the short version:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;One trip to Belgium and The Netherlands.&lt;/li&gt;
    &lt;li&gt;Two trips to Israel.&lt;/li&gt;
    &lt;li&gt;Two trips to Atlanta, GA (not counting the return trip from Europe, when
    I was stranded for a day due to storms in the Northeast).&lt;/li&gt;
    &lt;li&gt;Three different user groups attended, with three presentations.&lt;/li&gt;
    &lt;li&gt;One major Zend Framework release&lt;/li&gt;
    &lt;li&gt;One PEAR release.&lt;/li&gt;
    &lt;li&gt;One podcast.&lt;/li&gt;
    &lt;li&gt;One webinar.&lt;/li&gt;
    &lt;li&gt;One book published.&lt;/li&gt;
    &lt;li&gt;One conference attended.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    What follows is my month-by-month breakdown:
&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://weierophinney.net/matthew/archives/154-2007-Retrospective.html#extended&quot;&gt;Continue reading &quot;2007 Retrospective&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 01 Jan 2008 16:49:26 -0500</pubDate>
    <guid isPermaLink="false">http://weierophinney.net/matthew/archives/154-guid.html</guid>
    <category>best practices</category>
<category>books</category>
<category>conferences</category>
<category>file_fortune</category>
<category>mvc</category>
<category>pear</category>
<category>personal</category>
<category>php</category>
<category>programming</category>
<category>zend framework</category>
<category>zendcon</category>

</item>
<item>
    <title>PHP Anthology, 2nd Edition is out</title>
    <link>http://weierophinney.net/matthew/archives/148-PHP-Anthology,-2nd-Edition-is-out.html</link>
            <category>PHP</category>
    
    <comments>http://weierophinney.net/matthew/archives/148-PHP-Anthology,-2nd-Edition-is-out.html#comments</comments>
    <wfw:comment>http://weierophinney.net/matthew/wfwcomment.php?cid=148</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://weierophinney.net/matthew/rss.php?version=2.0&amp;type=comments&amp;cid=148</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;
    Well, it&#039;s now official: &lt;a href=&quot;http://www.sitepoint.com/books/phpant2/&quot;&gt;The PHP Anthology, 2nd Edition&lt;/a&gt;
    is finally out, and, as you&#039;ll see if you follow the link, I&#039;m listed as an
    author on it. &lt;img src=&quot;http://weierophinney.net/matthew/templates/matthew/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; It&#039;s a pleasant surprise to see it out -- I finished my
    chapters back in January, and had almost forgotten about it.
&lt;/p&gt;

 &lt;br /&gt;&lt;a href=&quot;http://weierophinney.net/matthew/archives/148-PHP-Anthology,-2nd-Edition-is-out.html#extended&quot;&gt;Continue reading &quot;PHP Anthology, 2nd Edition is out&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 30 Oct 2007 15:33:07 -0400</pubDate>
    <guid isPermaLink="false">http://weierophinney.net/matthew/archives/148-guid.html</guid>
    <category>best practices</category>
<category>books</category>
<category>php</category>

</item>
<item>
    <title>ZendCon is over at last</title>
    <link>http://weierophinney.net/matthew/archives/146-ZendCon-is-over-at-last.html</link>
            <category>PHP</category>
    
    <comments>http://weierophinney.net/matthew/archives/146-ZendCon-is-over-at-last.html#comments</comments>
    <wfw:comment>http://weierophinney.net/matthew/wfwcomment.php?cid=146</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://weierophinney.net/matthew/rss.php?version=2.0&amp;type=comments&amp;cid=146</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;
    &lt;a href=&quot;http://www.zendcon.com/&quot;&gt;ZendCon &#039;07&lt;/a&gt; is finally over, the dust
    has settled, and I finally find myself with some time alone... practically
    the first I&#039;ve had since Sunday. The week was fantastic, and I had many good
    conversations and brainstorming sessions. Oh, and I ended up giving three
    different sessions, so it&#039;s time for links to slides and materials:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://weierophinney.net/matthew/uploads/2007-ZendCon-BestPractices.odp&quot;&gt;Best Practices of PHP Development&lt;/a&gt;. 
        &lt;a href=&quot;http://sebastian-bergmann.de/&quot;&gt;Sebastian&lt;/a&gt;, 
        &lt;a href=&quot;http://mikenaberezny.com/&quot;&gt;Mike&lt;/a&gt;, and I presented a full-day
        tutorial on PHP development best practices, focussing primarily on
        testing and testing strategies, but also covering coding standards,
        usage of SCM tools, and deployment. There were a ton of questions from
        the attendees, and Sebastian even whipped out some extra slides at the
        end showing new and little-known features of PHPUnit. Basically, reading
        the slides won&#039;t really indicate what we covered, but is more of a
        general outline. It was an honor and pleasure to work with Sebastian and
        Mike on this, and I hope we can do it again in the future some time.
    &lt;/li&gt;

    &lt;li&gt;&lt;a href=&quot;http://weierophinney.net/matthew/uploads/2007-ZendCon-MVC.ppt&quot;&gt;Zend Framework MVC Quick Start&lt;/a&gt;.
        This was basically the same session I did in my &lt;a href=&quot;http://www.zend.com/webinar&quot;&gt;webinar&lt;/a&gt;
        a couple weeks ago, with a few corrections and a small demonstration.
        Cal put me on directly following &lt;a href=&quot;http://terrychay.com/blog&quot;&gt;Terry Chay&lt;/a&gt;,
        in the largest of the four session rooms -- the one where all the
        keynotes occurred -- talk about intimidating! Amazingly, the session was
        really well attended -- others I talked to estimate between 100 and 150
        people showed up. The most amazing part, though, was that when I asked
        how many people knew what &#039;MVC&#039; was, I don&#039;t think there was a single
        person who didn&#039;t raise their hand -- definitely a sign of how well
        accepted the pattern now is in PHP.
    &lt;/li&gt;

    &lt;li&gt;&lt;a href=&quot;http://weierophinney.net/matthew/uploads/2007-ZendCon-AjaxPresentation.odp&quot;&gt;AJAX-Enabling Your Zend Framework Controllers&lt;/a&gt;.
        I did this talk for the &lt;a href=&quot;http://www.zendcon.com/wiki/index.php?title=Uncon&quot;&gt;Unconference&lt;/a&gt;,
        mainly because its a topic I&#039;ve been interested in and wanted to
        present. In it, I detailed how to ajax-enable an application through
        some easy tricks with Action and View Helpers and using JS to decorate
        your existing application. The reference app I used was a pastebin, and
        I&#039;ve got code for both &lt;a href=&quot;http://dojotoolkit.org&quot;&gt;Dojo&lt;/a&gt; and 
        &lt;a href=&quot;http://prototypejs.org&quot;&gt;Prototype&lt;/a&gt; flavors available:
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;http://weierophinney.net/matthew/uploads/PastebinDojo.tar.gz&quot;&gt;Dojo pastebin&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;http://weierophinney.net/matthew/uploads/PastebinPrototype.tar.gz&quot;&gt;Prototype pastebin&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    The two highlight keynote speakers, for me, were definitely 
    &lt;a href=&quot;http://www.joelonsoftware.com/&quot;&gt;Joel Spolsky&lt;/a&gt; and
    &lt;a href=&quot;http://craphound.com/&quot;&gt;Cory Doctorow&lt;/a&gt;. Neither spoke about PHP,
    but both spoke about topics that PHP developers should take to heart.
    Perhaps I&#039;ll elaborate on those in another post.
&lt;/p&gt;

&lt;p&gt;
    Another bonus for me was the number of old and new friends alike I got to
    see -- I had many good conversations with Paul M. Jones, Nate Abele, Ivo
    Jansch, and Ralph Schindler, and opportunities to finally meet fellow
    co-author Lig Turmelle, Ben Ramsey, Chris Shifflet (dude, we&#039;ve been to four
    conferences together, and never yet met!), and many, many others. I was also
    overwhelmed by the number of Zend Framework users who sought me out either
    to ask me questions or simply thank me and the others on the team for the
    project; I&#039;m deeply honored that I can work on a project that affects so
    many developers.
&lt;/p&gt;

&lt;p&gt;
    And now for some down time to recuperate...
&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Thu, 11 Oct 2007 20:50:47 -0400</pubDate>
    <guid isPermaLink="false">http://weierophinney.net/matthew/archives/146-guid.html</guid>
    <category>best practices</category>
<category>conferences</category>
<category>php</category>
<category>zend framework</category>
<category>zendcon</category>

</item>

</channel>
</rss>