<?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>Mon, 06 Feb 2012 14:57:18 +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>New Rockville PHP Group</title>
		<link>http://www.brandonsavage.net/new-rockville-php-group/</link>
		<comments>http://www.brandonsavage.net/new-rockville-php-group/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 14:57:18 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[maryland]]></category>
		<category><![CDATA[meetup]]></category>
		<category><![CDATA[moco]]></category>
		<category><![CDATA[montgomery county]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php meetup]]></category>
		<category><![CDATA[rockville]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=1466</guid>
		<description><![CDATA[There are lots of active, vibrant developer groups in the DC area: DC PHP, Baltimore PHP, and the Frederick Web Tech group. The DC PHP Beverage Subgroup meets monthly in Northern Virginia. But in the middle between all these groups lies Montgomery County, Maryland. In that area live hundreds of developers who struggle to reach [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/new-rockville-php-group/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Excited About PHP Again</title>
		<link>http://www.brandonsavage.net/excited-about-php-again/</link>
		<comments>http://www.brandonsavage.net/excited-about-php-again/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 03:23:45 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[General PHP]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[5.3]]></category>
		<category><![CDATA[5.4]]></category>
		<category><![CDATA[foundations]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[purpose]]></category>
		<category><![CDATA[rasmus]]></category>
		<category><![CDATA[understanding]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=1461</guid>
		<description><![CDATA[Ten months ago when I started at Mozilla, I began transitioning away from PHP and into Python and Django. This was inevitable: the Mozilla Webdev team favors Python over PHP in almost every webapp (Socorro is the critical exception). However, over time I had become disillusioned with the direction that PHP was taking. The project [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/excited-about-php-again/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<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[Technology]]></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[Technology]]></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[Technology]]></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[Technology]]></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[Technology]]></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[Technology]]></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[Technology]]></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[Technology]]></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[Technology]]></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[Technology]]></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[Technology]]></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>22</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[Technology]]></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[Technology]]></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>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (Feed is rejected)
Page Caching using disk: enhanced (User agent is rejected)
Database Caching 5/15 queries in 0.007 seconds using disk: basic
Content Delivery Network via Amazon Web Services: S3: files.brandonsavage.net.s3.amazonaws.com

Served from: www.brandonsavage.net @ 2012-02-07 03:50:25 -->
