<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>PHPDeveloper.org</title>
    <link>http://www.phpdeveloper.org</link>
    <description>Up-to-the Minute PHP News, views and community</description>
    <language>en-us</language>
    <pubDate>Sat, 25 May 2013 05:18:44 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Anthony Ferrara's Blog: The Power of Technical Debt]]></title>
      <guid>http://www.phpdeveloper.org/news/17754</guid>
      <link>http://www.phpdeveloper.org/news/17754</link>
      <description><![CDATA[<p>
<i>Anthony Ferrara</i> has written up a <a href="http://blog.ircmaxell.com/2012/03/power-of-technical-debt.html">great post on technical debt</a>, relating it to terms that might be a bit more "real world" for many out there - corresponding financial problems.
</p>
<blockquote>
Lately, I've found myself in a number of discussions about Technical Debt and how it applies to project development. Overall, I think it's a very powerful tool that -- when used wisely -- can be a great asset to any team. It seems to me that most of the people that I've been talking to really don't agree, and see Technical Debt as a plague that should be eliminated at first sight. So, I figured I'd share my opinions, and see what you think...
</blockquote>
<p>
He talks about a few different kinds of technical debt described by the names of their financial counterparts:
</p>
<ul>
<li>the Payday Loan (a current concession for the sake of time)
<li>a Mortgage (making small parts, payments, of a whole without consideration of the overall picture)
<li>a Credit Card (not knowing the need causes a sub-optimal solution)
<li>Hidden Debit (an unclear understanding of the full scope of the debt)
</ul>
<p>
He also touches on two other topics - how to find and get rid of the Hidden Debt your project might have and a common misconception that technical debt doesn't exist in an aglie world.
</p>]]></description>
      <pubDate>Thu, 29 Mar 2012 14:49:23 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Building a Domain Model - An Introduction to Persistence Agnosticism]]></title>
      <guid>http://www.phpdeveloper.org/news/17591</guid>
      <link>http://www.phpdeveloper.org/news/17591</link>
      <description><![CDATA[<p>
On PHPMaster.com there's <a href="http://phpmaster.com/building-a-domain-model/">a recent tutorial</a> introducing the concept of a "domain model" and showing how to create them in PHP (manually, not inside of any ORM or database solution).
</p>
<blockquote>
First off, creating a rich Domain Model, where multiple domain objects with well-defined constraints and rules interact, can be a daunting task. Second, not only is it necessary to define from top to bottom the model itself, but it's also necessary to implement from scratch or reuse a mapping layer in order to move data back and forward between the persistence layer and the model in question. 
</blockquote>
<p>
They include an example of a set of domain models tat relate to one another - a blog setup with posts, comments and users. They show how to create the AbstractEntity to handle a bit of the magic behind the scenes, an example "Post" and "Comment" models and how they can be put to work creating some posts and appending comments. A little bit of markup is included to output the results.
</p>]]></description>
      <pubDate>Mon, 27 Feb 2012 12:58:00 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHP 10.0 Blog: duck operator]]></title>
      <guid>http://www.phpdeveloper.org/news/10352</guid>
      <link>http://www.phpdeveloper.org/news/10352</link>
      <description><![CDATA[<p>
In <a href="http://php100.wordpress.com/2008/06/05/duck-operator/">this new post</a> to the PHP 10.0 blog today, <i>Stas</i> talks about <a href="http://en.wikipedia.org/wiki/Duck_typing">duck typing</a>, a method that lets the code decide the functionality to use rather than a direct relation to a parent.
</p>
<blockquote>
Well, if you are into <a href="http://en.wikipedia.org/wiki/Duck_typing">duck typing</a> style of programming, it may be interesting for you to have an object that implements certain set of functions, but not necessary declares it at class definition. Languages like Smalltalk do it all day along, so why PHP couldn't?
</blockquote>
<p>
His example defines an interface Cow and a class MooingGrassEater and a function, CowConsumer, that does the work. A classname is passed in and an instance of that class is checked with "implements" rather than "instanceof" to see if it uses the Cow interface. He points out a place where PHP itself uses something similar in <a href="http://php.net/manual/en/function.stream-wrapper-register.php">user defined streams</a>.
</p>]]></description>
      <pubDate>Thu, 05 Jun 2008 14:36:31 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Tobias Schlitt's Blog: Object relation mapping in eZ Components]]></title>
      <guid>http://www.phpdeveloper.org/news/7366</guid>
      <link>http://www.phpdeveloper.org/news/7366</link>
      <description><![CDATA[<p>
<i>Tobias Schlitt</i> has <a href="http://schlitt.info/applications/blog/index.php?/archives/528-Object-relation-mapping-in-eZ-Components.html">pointed out</a> a new <a href="http://ez.no/community/articles/the_persistentobject_ez_component_putting_relations_where_relations_belong">article he's written up</a> that acts as an introduction to the features of the new ORM component of the eZ Components application framework - the <a href="http://ez.no/doc/components/view/latest/(file)/classtrees_PersistentObject.html">PersisteneObject</a>.
</p>
<blockquote>
For me the coolest feature of PersistentObject is, that the component does not require you're ORM enabled classes to inherit from a certain base to allow your objects to be stored in a database (made persistent).
</blockquote>
<p>
This new object gives you a "wapper" of sorts to make any of the pre-existing objects in your application persistent. Check out <a href="http://ez.no/community/articles/the_persistentobject_ez_component_putting_relations_where_relations_belong">the article</a> for more.
</p>]]></description>
      <pubDate>Thu, 01 Mar 2007 10:03:00 -0600</pubDate>
    </item>
  </channel>
</rss>
