<?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/" xmlns:series="http://unfoldingneurons.com/" ><channel><title>BrandonSavage.net &#187; PHP</title> <atom:link href="http://www.brandonsavage.net/tag/php/feed/" rel="self" type="application/rss+xml" /><link>http://www.brandonsavage.net</link> <description>The personal blog of Brandon Savage. Contains entries of a personal and professional nature focusing on PHP, Apple, LAMP, MySQL and Washington, DC.</description> <lastBuildDate>Wed, 28 Jul 2010 15:28:37 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.0.1</generator> <item><title>July Slides</title><link>http://www.brandonsavage.net/july-slides/</link> <comments>http://www.brandonsavage.net/july-slides/#comments</comments> <pubDate>Wed, 28 Jul 2010 15:28:37 +0000</pubDate> <dc:creator>Brandon Savage</dc:creator> <category><![CDATA[Conferences]]></category> <category><![CDATA[Object-Oriented Development]]></category> <category><![CDATA[PHP 5]]></category> <category><![CDATA[System Architecture]]></category> <category><![CDATA[micro-optimization]]></category> <category><![CDATA[object oriented programming]]></category> <category><![CDATA[object-oriented design]]></category> <category><![CDATA[OOP]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[scalability]]></category> <category><![CDATA[software]]></category><guid isPermaLink="false">http://www.brandonsavage.net/?p=1317</guid> <description><![CDATA[July was a month of talks and travel, including speaking at OSCON and user group talks to DCPHP and PDXPHP. For those who saw the &#8220;Micro Optimize This!&#8221; talk, you can download the slides here. For those looking for the &#8220;Five Tips To Make Good Object Oriented Code Better&#8221; slides, those are available here.]]></description> <wfw:commentRss>http://www.brandonsavage.net/july-slides/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Interfaces Make Testing Easier</title><link>http://www.brandonsavage.net/interfaces-make-testing-easier/</link> <comments>http://www.brandonsavage.net/interfaces-make-testing-easier/#comments</comments> <pubDate>Wed, 26 May 2010 11:00:54 +0000</pubDate> <dc:creator>Brandon Savage</dc:creator> <category><![CDATA[Object-Oriented Development]]></category> <category><![CDATA[interfaces]]></category> <category><![CDATA[object-oriented design]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Zend Framework]]></category><guid isPermaLink="false">http://www.brandonsavage.net/?p=1308</guid> <description><![CDATA[I, along with others, have written on interfaces many times before but recently I had occasion to find a new thing about them that makes them really awesome. A few days ago I was tasked with implementing PHPUnit against a Zend Framework application. This application, like many others, makes use of Zend_Auth, and in doing [...]]]></description> <wfw:commentRss>http://www.brandonsavage.net/interfaces-make-testing-easier/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>PHP: The Good Parts &#8211; Book Review</title><link>http://www.brandonsavage.net/php-the-good-parts-book-review/</link> <comments>http://www.brandonsavage.net/php-the-good-parts-book-review/#comments</comments> <pubDate>Mon, 03 May 2010 11:00:35 +0000</pubDate> <dc:creator>Brandon Savage</dc:creator> <category><![CDATA[Reviews]]></category> <category><![CDATA[book]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[php 5.3]]></category> <category><![CDATA[review]]></category><guid isPermaLink="false">http://www.brandonsavage.net/?p=1292</guid> <description><![CDATA[Wez Furlong received a copy of PHP: The Good Parts as a thank you for his participation as a technical reviewer, and loaned it to me for a read. After reading it, I wanted to put together a brief review of the book for those who might be interested in this new title from O&#8217;Reilly. [...]]]></description> <wfw:commentRss>http://www.brandonsavage.net/php-the-good-parts-book-review/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>A Closer Look At ArrayObject</title><link>http://www.brandonsavage.net/a-closer-look-at-arrayobject/</link> <comments>http://www.brandonsavage.net/a-closer-look-at-arrayobject/#comments</comments> <pubDate>Mon, 26 Apr 2010 11:00:08 +0000</pubDate> <dc:creator>Brandon Savage</dc:creator> <category><![CDATA[PHP 5]]></category> <category><![CDATA[ArrayObject]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[SPL]]></category><guid isPermaLink="false">http://www.brandonsavage.net/?p=1284</guid> <description><![CDATA[Every once in a while I discover a really cool, really underutilized component in PHP and I just have to write about it. I recently discovered (through my use of Zend Framework) the implementation of the ArrayObject class. ArrayObject is an object that is designed to behave exactly like an array. If that seems confusing, [...]]]></description> <wfw:commentRss>http://www.brandonsavage.net/a-closer-look-at-arrayobject/feed/</wfw:commentRss> <slash:comments>12</slash:comments> </item> <item><title>TEK Webcast Notes</title><link>http://www.brandonsavage.net/tek-webcast-notes/</link> <comments>http://www.brandonsavage.net/tek-webcast-notes/#comments</comments> <pubDate>Wed, 21 Apr 2010 11:00:58 +0000</pubDate> <dc:creator>Brandon Savage</dc:creator> <category><![CDATA[Best Practices]]></category> <category><![CDATA[Conferences]]></category> <category><![CDATA[APC]]></category> <category><![CDATA[caching]]></category> <category><![CDATA[performance]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[PHP TEK]]></category> <category><![CDATA[Wordpress]]></category><guid isPermaLink="false">http://www.brandonsavage.net/?p=1278</guid> <description><![CDATA[Last Friday, I did a webcast as a part of the PHP TEK Webcast series. The webcast was on Caching for WordPress. We had a good turnout, and there were lots of questions about the best plugins to use for WordPress caching. For me, every WordPress blog should have APC installed on it, hands down. [...]]]></description> <wfw:commentRss>http://www.brandonsavage.net/tek-webcast-notes/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>A Lesson In Static Methods And Late Static Binding</title><link>http://www.brandonsavage.net/a-lesson-in-static-methods-and-late-static-binding/</link> <comments>http://www.brandonsavage.net/a-lesson-in-static-methods-and-late-static-binding/#comments</comments> <pubDate>Mon, 12 Apr 2010 11:00:57 +0000</pubDate> <dc:creator>Brandon Savage</dc:creator> <category><![CDATA[Object-Oriented Development]]></category> <category><![CDATA[PHP 5]]></category> <category><![CDATA[Zend Framework]]></category> <category><![CDATA[late static binding]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[singleton pattern]]></category> <category><![CDATA[static]]></category> <category><![CDATA[Zend_Auth]]></category><guid isPermaLink="false">http://www.brandonsavage.net/?p=1264</guid> <description><![CDATA[Until last week, I had never experienced what must have been incredibly frustrating to most developers: the fact that the self keyword in PHP refers to the class it is located in, and not necessarily a class that extends it. I personally ran into this problem when trying to extend Zend_Auth. Being a singleton, the [...]]]></description> <wfw:commentRss>http://www.brandonsavage.net/a-lesson-in-static-methods-and-late-static-binding/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>The Registry Pattern Reexamined</title><link>http://www.brandonsavage.net/the-registry-pattern-reexamined/</link> <comments>http://www.brandonsavage.net/the-registry-pattern-reexamined/#comments</comments> <pubDate>Fri, 26 Mar 2010 11:00:37 +0000</pubDate> <dc:creator>Brandon Savage</dc:creator> <category><![CDATA[Best Practices]]></category> <category><![CDATA[Object-Oriented Development]]></category> <category><![CDATA[architecture]]></category> <category><![CDATA[design]]></category> <category><![CDATA[design patterns]]></category> <category><![CDATA[object oriented programming]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[PHP 5]]></category> <category><![CDATA[registry pattern]]></category><guid isPermaLink="false">http://www.brandonsavage.net/?p=1221</guid> <description><![CDATA[Last July, I wrote about the registry pattern and some of its advantages. These advantages include the ability to access objects across different areas of your application, and the storage of objects for later retrieval. Much of the debate in the comments focused on whether or not the registry pattern was suitable for today&#8217;s object-oriented [...]]]></description> <wfw:commentRss>http://www.brandonsavage.net/the-registry-pattern-reexamined/feed/</wfw:commentRss> <slash:comments>15</slash:comments> </item> <item><title>Thinking About Trac Replacements? Consider Mtrack.</title><link>http://www.brandonsavage.net/thinking-about-trac-replacements-consider-mtrack/</link> <comments>http://www.brandonsavage.net/thinking-about-trac-replacements-consider-mtrack/#comments</comments> <pubDate>Wed, 24 Mar 2010 11:00:54 +0000</pubDate> <dc:creator>Brandon Savage</dc:creator> <category><![CDATA[Open Source]]></category> <category><![CDATA[bitbucket]]></category> <category><![CDATA[bug tracking]]></category> <category><![CDATA[mtrack]]></category> <category><![CDATA[new open source]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[project management]]></category> <category><![CDATA[python]]></category> <category><![CDATA[Trac]]></category><guid isPermaLink="false">http://www.brandonsavage.net/?p=1208</guid> <description><![CDATA[Recently, I began working alongside Wez Furlong here at Message Systems. One of the many tools we use is Mtrack. This tool is a port of Trac into PHP, along with the addition of some great new features. Spearheaded by Wez, it&#8217;s a great tool that we use internally for our projects, and since it&#8217;s [...]]]></description> <wfw:commentRss>http://www.brandonsavage.net/thinking-about-trac-replacements-consider-mtrack/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>In Defense of Development Practices</title><link>http://www.brandonsavage.net/in-defense-of-development-practices/</link> <comments>http://www.brandonsavage.net/in-defense-of-development-practices/#comments</comments> <pubDate>Fri, 12 Mar 2010 06:00:57 +0000</pubDate> <dc:creator>Brandon Savage</dc:creator> <category><![CDATA[Best Practices]]></category> <category><![CDATA[Opinion]]></category> <category><![CDATA[development process]]></category> <category><![CDATA[PHP]]></category><guid isPermaLink="false">http://www.brandonsavage.net/?p=1187</guid> <description><![CDATA[On Tuesday, Marco Tabini told us that we were doing it all wrong. He makes some fantastic points about software development overall, and about the state of our profession. This article&#8217;s point isn&#8217;t to be a rebuttal, but a corollary to what he had to say. Marco is right: every one of us is &#8220;doing [...]]]></description> <wfw:commentRss>http://www.brandonsavage.net/in-defense-of-development-practices/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Micro Optimizations That Don&#8217;t Matter</title><link>http://www.brandonsavage.net/micro-optimizations-that-dont-matter/</link> <comments>http://www.brandonsavage.net/micro-optimizations-that-dont-matter/#comments</comments> <pubDate>Mon, 26 Oct 2009 05:00:43 +0000</pubDate> <dc:creator>Brandon Savage</dc:creator> <category><![CDATA[Best Practices]]></category> <category><![CDATA[foolishness]]></category> <category><![CDATA[micro-optimization]]></category> <category><![CDATA[PHP]]></category><guid isPermaLink="false">http://www.brandonsavage.net/?p=907</guid> <description><![CDATA[Last week I wrote about some optimizations you can apply to your code that will improve the performance of your site significantly. I also mentioned that regularly an article pops up talking about ways to shave time off your scripts, and I talked about how these articles mostly are bunk. Like this one. The article [...]]]></description> <wfw:commentRss>http://www.brandonsavage.net/micro-optimizations-that-dont-matter/feed/</wfw:commentRss> <slash:comments>9</slash:comments> <series:name><![CDATA[The Beginner Pattern]]></series:name> </item> <item><title>Five Cool PHP Array Functions</title><link>http://www.brandonsavage.net/five-cool-php-array-functions/</link> <comments>http://www.brandonsavage.net/five-cool-php-array-functions/#comments</comments> <pubDate>Wed, 21 Oct 2009 05:00:52 +0000</pubDate> <dc:creator>Brandon Savage</dc:creator> <category><![CDATA[Best Practices]]></category> <category><![CDATA[General PHP]]></category> <category><![CDATA[array]]></category> <category><![CDATA[internals]]></category> <category><![CDATA[PHP]]></category><guid isPermaLink="false">http://www.brandonsavage.net/?p=887</guid> <description><![CDATA[Time and time again, I come across code that contains a variety of array-handling functions that too often duplicate the work that the PHP core team has done to develop built-in array functions. Since the built-in functions are inherently faster, trying to reimplement them in PHP will inevitably be a performance problem. Here are five [...]]]></description> <wfw:commentRss>http://www.brandonsavage.net/five-cool-php-array-functions/feed/</wfw:commentRss> <slash:comments>21</slash:comments> <series:name><![CDATA[The Beginner Pattern]]></series:name> </item> <item><title>How To Write A Function In PHP</title><link>http://www.brandonsavage.net/how-to-write-a-function-in-php/</link> <comments>http://www.brandonsavage.net/how-to-write-a-function-in-php/#comments</comments> <pubDate>Mon, 12 Oct 2009 05:00:07 +0000</pubDate> <dc:creator>Brandon Savage</dc:creator> <category><![CDATA[General PHP]]></category> <category><![CDATA[beginner]]></category> <category><![CDATA[functions]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[tutorial]]></category><guid isPermaLink="false">http://www.brandonsavage.net/?p=815</guid> <description><![CDATA[PHP allows developers to write a variety of different styles of code: procedural, object-oriented, or simply scripts. This flexibility makes PHP easy to learn, and also means that new developers to PHP may not be programmers in other languages. For new developers, especially developers who have never been programmers before, moving from writing simple scripts [...]]]></description> <wfw:commentRss>http://www.brandonsavage.net/how-to-write-a-function-in-php/feed/</wfw:commentRss> <slash:comments>11</slash:comments> <series:name><![CDATA[The Beginner Pattern]]></series:name> </item> <item><title>To The New PHP Programmers&#8230;</title><link>http://www.brandonsavage.net/to-the-new-php-programmers/</link> <comments>http://www.brandonsavage.net/to-the-new-php-programmers/#comments</comments> <pubDate>Fri, 09 Oct 2009 05:00:05 +0000</pubDate> <dc:creator>Brandon Savage</dc:creator> <category><![CDATA[Friday Inspirations]]></category> <category><![CDATA[beginners]]></category> <category><![CDATA[newbies]]></category> <category><![CDATA[PHP]]></category><guid isPermaLink="false">http://www.brandonsavage.net/?p=754</guid> <description><![CDATA[Nearly five years ago I started writing PHP code for fun. I had a project that I was working on, and I needed some sort of a programming language that would do calculations for me, and hopefully make managing a website easier. So I wrote my first web application. Boy, was it bad. Looking back [...]]]></description> <wfw:commentRss>http://www.brandonsavage.net/to-the-new-php-programmers/feed/</wfw:commentRss> <slash:comments>9</slash:comments> <series:name><![CDATA[The Beginner Pattern]]></series:name> </item> <item><title>First Glance: Apple&#8217;s Snow Leopard</title><link>http://www.brandonsavage.net/first-glance-apples-snow-leopard/</link> <comments>http://www.brandonsavage.net/first-glance-apples-snow-leopard/#comments</comments> <pubDate>Sat, 29 Aug 2009 00:00:26 +0000</pubDate> <dc:creator>Brandon Savage</dc:creator> <category><![CDATA[PHP 5]]></category> <category><![CDATA[Reviews]]></category> <category><![CDATA[Apache]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[php 5.3]]></category> <category><![CDATA[Snow Leopard]]></category><guid isPermaLink="false">http://www.brandonsavage.net/?p=637</guid> <description><![CDATA[For those who like the newest in development tools, Apple has surely delivered with the Snow Leopard operating system upgrade. Apple has compiled PHP 5.3, including many of the extensions they forgot in the PHP 5.2.x version included with Leopard. This includes GD, and the MySQL Native Driver (mysqlnd) that is available in PHP 5.3. [...]]]></description> <wfw:commentRss>http://www.brandonsavage.net/first-glance-apples-snow-leopard/feed/</wfw:commentRss> <slash:comments>13</slash:comments> </item> <item><title>Peer Review: Looking Into Abstraction</title><link>http://www.brandonsavage.net/peer-review-looking-into-abstraction/</link> <comments>http://www.brandonsavage.net/peer-review-looking-into-abstraction/#comments</comments> <pubDate>Wed, 26 Aug 2009 05:00:16 +0000</pubDate> <dc:creator>Brandon Savage</dc:creator> <category><![CDATA[Best Practices]]></category> <category><![CDATA[System Architecture]]></category> <category><![CDATA[objects php 5]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[refactoring]]></category><guid isPermaLink="false">http://www.brandonsavage.net/?p=571</guid> <description><![CDATA[This entry is part of an ongoing series involving the review of a code sample and it&#8217;s refactoring. For the original code sample, see here. There are a number of fundamental concepts in object-oriented design that we should take notice of. One of these concepts is abstraction. This is what we will focus on today [...]]]></description> <wfw:commentRss>http://www.brandonsavage.net/peer-review-looking-into-abstraction/feed/</wfw:commentRss> <slash:comments>11</slash:comments> <series:name><![CDATA[Peer Review]]></series:name> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using apc (user agent is rejected)
Database Caching 46/56 queries in 0.010 seconds using disk

Served from: www.brandonsavage.net @ 2010-09-10 13:29:42 -->