<?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://organizeseries.com/"
	>

<channel>
	<title>BrandonSavage.net &#187; PHP 5</title>
	<atom:link href="http://www.brandonsavage.net/category/php-5/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>Thu, 23 May 2013 20:22:30 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.2-alpha</generator>
		<item>
		<title>Dealing with duplicated code</title>
		<link>http://www.brandonsavage.net/dealing-with-duplicated-code/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dealing-with-duplicated-code</link>
		<comments>http://www.brandonsavage.net/dealing-with-duplicated-code/#comments</comments>
		<pubDate>Wed, 15 May 2013 11:00:31 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Object-Oriented Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 5]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=2460</guid>
		<description><![CDATA[We&#8217;ve all seen it: we&#8217;re working along, and we come across code that just has a feel to it. It&#8217;s like déjà vu. You&#8217;ve seen this code before. You open another file &#8211; sure enough, there it is. The same code. Almost line for line. In large code bases, it&#8217;s likely that there are dozens [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/dealing-with-duplicated-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making better object oriented design decisions</title>
		<link>http://www.brandonsavage.net/making-better-object-oriented-design-decisions/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=making-better-object-oriented-design-decisions</link>
		<comments>http://www.brandonsavage.net/making-better-object-oriented-design-decisions/#comments</comments>
		<pubDate>Fri, 10 May 2013 11:00:36 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Object-Oriented Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 5]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=2443</guid>
		<description><![CDATA[Last week I finished up the first section of The Object Oriented PHP Masterclass. The class was great, and I learned about as much from my students as they learned from me. One of the most common questions I got from my students was &#8220;how do I make decisions about how to design my object [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/making-better-object-oriented-design-decisions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Avoiding object oriented overkill</title>
		<link>http://www.brandonsavage.net/avoiding-object-oriented-overkill/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=avoiding-object-oriented-overkill</link>
		<comments>http://www.brandonsavage.net/avoiding-object-oriented-overkill/#comments</comments>
		<pubDate>Wed, 01 May 2013 11:00:50 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Object-Oriented Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[Refactoring]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=2434</guid>
		<description><![CDATA[In the second live session of my object oriented design class, The Object Oriented PHP Masterclass, I show my students domain modeling, both with slides and with a live coding demonstration. In my demonstration, I show them how I break the single model they&#8217;ve been using into three component parts: a value object, a data [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/avoiding-object-oriented-overkill/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Using Interfaces For Exceptions</title>
		<link>http://www.brandonsavage.net/using-interfaces-for-exceptions/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=using-interfaces-for-exceptions</link>
		<comments>http://www.brandonsavage.net/using-interfaces-for-exceptions/#comments</comments>
		<pubDate>Tue, 22 Jan 2013 11:00:33 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Object-Oriented Development]]></category>
		<category><![CDATA[PHP 5]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=2030</guid>
		<description><![CDATA[In PHP (as well as many other object oriented languages), exceptions are simply objects, which can be extended and reused. PHP makes them special in the sense that only exceptions that inherit from the base class Exception are throwable by the interpreter (you cannot throw any generic object you create). Most developers are therefore aware [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/using-interfaces-for-exceptions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A Last Chance To Get A Bonus With Do This, Not That</title>
		<link>http://www.brandonsavage.net/a-last-chance-to-get-a-bonus-with-do-this-not-that/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-last-chance-to-get-a-bonus-with-do-this-not-that</link>
		<comments>http://www.brandonsavage.net/a-last-chance-to-get-a-bonus-with-do-this-not-that/#comments</comments>
		<pubDate>Mon, 31 Dec 2012 01:37:56 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Object-Oriented Development]]></category>
		<category><![CDATA[PHP 5]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=1823</guid>
		<description><![CDATA[When I released Do This, Not That: Object Oriented PHP, I also included a free bonus of &#8220;Programmer in Command: What Aviation Teaches Software Developers&#8221;. This manifesto contains several suggestions that I learned over time as the best software development practices. I offered it until January 1st, 2013, and since that&#8217;s coming up on us [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/a-last-chance-to-get-a-bonus-with-do-this-not-that/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Do This, Not That&#8221; Now Available!</title>
		<link>http://www.brandonsavage.net/do-this-not-that-now-available/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=do-this-not-that-now-available</link>
		<comments>http://www.brandonsavage.net/do-this-not-that-now-available/#comments</comments>
		<pubDate>Wed, 19 Dec 2012 13:00:02 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Object-Oriented Development]]></category>
		<category><![CDATA[PHP 5]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=1725</guid>
		<description><![CDATA[The long wait is over! Do This, Not That: Object Oriented PHP is now available! If you&#8217;ve ever had to rewrite code that didn&#8217;t pass code review, this book is for you. If you&#8217;ve ever wondered how to improve your PHP development skills, this book is for you. This book is for everybody who ever [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/do-this-not-that-now-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Improve Your PHP Development Skills</title>
		<link>http://www.brandonsavage.net/improve-your-php-development-skills/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=improve-your-php-development-skills</link>
		<comments>http://www.brandonsavage.net/improve-your-php-development-skills/#comments</comments>
		<pubDate>Mon, 17 Dec 2012 12:00:56 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Object-Oriented Development]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[book writing]]></category>
		<category><![CDATA[do this not that]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[object oriented php]]></category>
		<category><![CDATA[object-oriented]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=1710</guid>
		<description><![CDATA[Maybe you struggle with object oriented code, understanding it and writing it. Perhaps you&#8217;re tired of having to rewrite code that doesn&#8217;t pass code review or introduces a bug you didn&#8217;t expect. Maybe you&#8217;d like to impress your boss by improving your skills without having to attend an expensive conference. If any of that describes [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/improve-your-php-development-skills/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing &#8220;Do This, Not That&#8221; For PHP Developers</title>
		<link>http://www.brandonsavage.net/introducing-do-this-not-that-for-php-developers/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=introducing-do-this-not-that-for-php-developers</link>
		<comments>http://www.brandonsavage.net/introducing-do-this-not-that-for-php-developers/#comments</comments>
		<pubDate>Mon, 17 Sep 2012 11:00:40 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[beginner]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[improvement]]></category>
		<category><![CDATA[intermediate]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[personal development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[professional development]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[self improvement]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=1640</guid>
		<description><![CDATA[When I was a new PHP developer, I discovered that there&#8217;s a myriad of solutions, options, configurations and frameworks available. I thought, how does one sift through all the noise and get something done? How can anyone have a grasp of the best practices in PHP, and make sense out of all the options? Which [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/introducing-do-this-not-that-for-php-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>July Slides</title>
		<link>http://www.brandonsavage.net/july-slides/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=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>A Closer Look At ArrayObject</title>
		<link>http://www.brandonsavage.net/a-closer-look-at-arrayobject/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=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>A Lesson In Static Methods And Late Static Binding</title>
		<link>http://www.brandonsavage.net/a-lesson-in-static-methods-and-late-static-binding/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=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>Upgrades In Open Source</title>
		<link>http://www.brandonsavage.net/upgrades-in-open-source/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=upgrades-in-open-source</link>
		<comments>http://www.brandonsavage.net/upgrades-in-open-source/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 06:00:19 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=1181</guid>
		<description><![CDATA[PHP 5.3 has been out now for eight months, and in that time lots of projects have made decisions to begin developing against this version of PHP. Juozas Kaziukenas makes the argument that you shouldn&#8217;t be afraid of PHP 5.3 and he provides a number of excellent points to support his argument. I don&#8217;t dispute [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/upgrades-in-open-source/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Cool DateTime Functions In PHP 5.3</title>
		<link>http://www.brandonsavage.net/cool-datetime-functions-in-php-5-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cool-datetime-functions-in-php-5-3</link>
		<comments>http://www.brandonsavage.net/cool-datetime-functions-in-php-5-3/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 06:00:04 +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[date]]></category>
		<category><![CDATA[date development]]></category>
		<category><![CDATA[date handling]]></category>
		<category><![CDATA[DateTime]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[timezone]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=1157</guid>
		<description><![CDATA[Over time, the PHP DateTime object has become one of the best objects available to PHP developers. This object has grown since early PHP 5 into a robust class that has the ability to do lots of great things. Recently, I was exploring some of the functionality provided by the DateTime object as of PHP [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/cool-datetime-functions-in-php-5-3/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Exceptional PHP: Nesting Exceptions In PHP</title>
		<link>http://www.brandonsavage.net/exceptional-php-nesting-exceptions-in-php/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=exceptional-php-nesting-exceptions-in-php</link>
		<comments>http://www.brandonsavage.net/exceptional-php-nesting-exceptions-in-php/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 06:00:17 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Object-Oriented Development]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[exceptions]]></category>
		<category><![CDATA[extending exceptions]]></category>
		<category><![CDATA[nested exceptions]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=995</guid>
		<description><![CDATA[In the last two entries we have talked about the concept of layer abstraction: that is, that exceptions should not be allowed to pass out of one layer and into another. So, when an exception is raised in the database layer it should be caught in the controller. But how do we go about making [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/exceptional-php-nesting-exceptions-in-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exceptional PHP: Extending The Base Exception Class</title>
		<link>http://www.brandonsavage.net/exceptional-php-extending-the-base-exception-class/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=exceptional-php-extending-the-base-exception-class</link>
		<comments>http://www.brandonsavage.net/exceptional-php-extending-the-base-exception-class/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 06:00:17 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Object-Oriented Development]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[catching exceptions]]></category>
		<category><![CDATA[exception handling]]></category>
		<category><![CDATA[extending exceptions]]></category>
		<category><![CDATA[throwing exceptions]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=993</guid>
		<description><![CDATA[On Monday, we talked about the basics of exceptions and how they are used in PHP (as well as in other object-oriented programming languages). As promised, today we are going to talk about extending the base exception class in PHP. One of the things that you can (and should) do with PHP exceptions is extend [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/exceptional-php-extending-the-base-exception-class/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</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)
Object Caching 1323/1521 objects using apc
Content Delivery Network via Amazon Web Services: S3: brandonsavage-net-files.s3.amazonaws.com

 Served from: www.brandonsavage.net @ 2013-05-24 08:05:42 by W3 Total Cache -->