<?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>Sun, 19 May 2013 20:36:58 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[NetTuts.com: Relational Databases for Dummies]]></title>
      <guid>http://www.phpdeveloper.org/news/19313</guid>
      <link>http://www.phpdeveloper.org/news/19313</link>
      <description><![CDATA[<p>
If you're relatively new to PHP development or have just meaning to get into using relational databases with your application, you should check out <a href="http://net.tutsplus.com/tutorials/tools-and-tips/relational-databases-for-dummies/">this new post</a> from NetTuts giving a "for dummies" approach to learning about RDBMSes.
</p>
<blockquote>
Web apps can be split into two major components: a front-end that displays and collects information, and a back-end for storing the information. In this article, I'll demonstrate what a relational database is, and how to properly design your database to store your app's information.
</blockquote>
<p>
They describe the usage of a database in several steps (no code is included, just SQL at the end):
</p>
<ul>
<li>Get Some Data
<li>Remove Repetitive Data Across Columns
<li>Remove Repetitive Data Across Rows
<li>Linking Tables with Keys
</ul>
<p>
This is followed by links to a few of the different RDBMSes out there and a brief introduction to what SQL is and what it looks like.
</p>]]></description>
      <pubDate>Thu, 14 Mar 2013 10:43:13 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Web & PHP Magazine: Issue #12 - Don't Get in a PECL]]></title>
      <guid>http://www.phpdeveloper.org/news/19290</guid>
      <link>http://www.phpdeveloper.org/news/19290</link>
      <description><![CDATA[<p>
The latest issue of the Web and PHP Magazine has been published - <a href="http://webandphp.com/issue-12">issue #12</a>, "Don't get in a PECL". This latest issue includes articles like:
</p>
<ul>
<li>"The Power of PECL" by <i>Simon Holywell</i>
<li>"Be 'ready' if you want to be done!" by <i>Steffan Surdek</i>
<li>"All Data is Relational" by <i>Cory Isaacson</i>
<lI>"Fixing PHP Production Problems with APM" by <i>Dan Delany</i> and <i>Chris Kelly</i>
<li>"Trust" by <i>Sebastian Bergmann</i>
</ul>
<p>
You can download your copy for free from <a href="http://webandphp.com/issue-12">their site</a> and catch up on back issues.
</p>]]></description>
      <pubDate>Fri, 08 Mar 2013 10:23:36 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[DevShed: Building an ORM in PHP: Domain Modeling]]></title>
      <guid>http://www.phpdeveloper.org/news/17159</guid>
      <link>http://www.phpdeveloper.org/news/17159</link>
      <description><![CDATA[<p>
Continuing on from the <a href="http://phpdeveloper.org/news/17146">first part</a> of their series, DevShed has posted part two of their "Building an ORM in PHP" series. This latest tutorial <a href="http://www.devshed.com/c/a/MySQL/Building-an-ORM-in-PHP-Domain-Modeling/">focuses on domain modeling</a> (and collection handling).
</p>
<blockquote>
In that first part, I implemented the ORM's data access and mapping layers. And as you'll surely recall, the entire implementation process was pretty straightforward and easy to follow. Of course, in its current state the ORM is still far from a fully-functional structure. We need to add some additional components to it, such as a domain model and the classes responsible for handling collections of entities (remember that the ORM relies heavily on the data mapper pattern to do its business properly).
</blockquote>
<p>
He stays with his "simple blog" example and shows domain models (based on an abstract entity) for Entries, Comments and Authors. His containers extend the Countable, IteratorAggregate and ArrayAccess interfaces to give them some extra abilities.
</p>]]></description>
      <pubDate>Tue, 22 Nov 2011 16:46:10 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Developer.com: Doctrine: Object Relational Mapping for Your PHP Development]]></title>
      <guid>http://www.phpdeveloper.org/news/14645</guid>
      <link>http://www.phpdeveloper.org/news/14645</link>
      <description><![CDATA[<p>
New on Developer.com today there's a <a href="http://www.developer.com/db/article.php/3887336/article.htm">new article</a> looking at one of the more powerful ORM tools available for PHP - <a href="http://www.doctrine-project.org/">Doctrine</a>.
</p>
<blockquote>
Because of the relational database's pivotal role in driving Web applications, a great deal of time and effort has been put into creating tools that not only simplify the task of mapping database tables to a programming language's object-oriented class structure, but also facilitate the management of your data and schemas over the project lifecycle. [...] The PHP community also has a powerful database integration tool at their disposal: a project known as <a href="http://www.doctrine-project.org/">Doctrine</a>. 
</blockquote>
<p>
They help you get started with this powerful tool by showing you how to get it installed, create a sample schema and loading some fixtures (base data). There's also a quick snippet of code showing you how to grab information from a sample user table and display the name of the user.
</p>]]></description>
      <pubDate>Mon, 14 Jun 2010 10:22:06 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Doctrine Blog: Doctrine 1.0.8 and 1.1.0-RC2 Released]]></title>
      <guid>http://www.phpdeveloper.org/news/12055</guid>
      <link>http://www.phpdeveloper.org/news/12055</link>
      <description><![CDATA[<p>
<i>Guilherme Blanco</i> passed along a note about the latest releases from the Doctrine project, <a href="http://www.doctrine-project.org/blog/doctrine-1-0-8-and-1-1-0-rc2-released">Doctrine 1.0.8 and 1.1.0-RC2</a>:
</p>
<blockquote>
Today I am happy to tell you that we have two new versions of Doctrine available for you to use. The first is the monthly maintenance release for Doctrine 1.0 and the second is another release candidate for the newest major version of Doctrine, 1.1. As always you can grab them from the <a href="http://www.doctrine-project.org/download">downloads page</a>.
</blockquote>
<p>
Updates in these two versions include a few backported fixes from 1.1, updates to the Doctrine_Query::count() method for optimization, and several fixes in the Release Candidate in preparation for the next release. You can see the full Changelogs here: <a href="http://www.doctrine-project.org/change_log/1_0_8">1.0.8</a> and <a href="http://www.doctrine-project.org/change_log/1_1_0_RC2">1.1.0-RC2</a>.
</p>]]></description>
      <pubDate>Tue, 03 Mar 2009 10:24:36 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Seastian Bergmann's Blog: Object-Relational Behavioral Patterns]]></title>
      <guid>http://www.phpdeveloper.org/news/11956</guid>
      <link>http://www.phpdeveloper.org/news/11956</link>
      <description><![CDATA[<p>
<i>Seastian Bergmann</i> has added some new features to the <a href="http://github.com/sebastianbergmann/php-object-freezer/">Object_Freezer</a> library (you can read more about it <a href="http://sebastian-bergmann.de/archives/831-Freezing-and-Thawing-PHP-Objects.html">here</a>) - some new object-relational behavioral patterns.
</p>
<p>
The three patterns are from <i>Martin Fowler</i>'s <a href="http://martinfowler.com/books.html#eaa">Patterns of Enterprise Application Architecture</a> book:
</p>
<ul>
<li><a href="http://martinfowler.com/eaaCatalog/unitOfWork.html">Unit of Work</a> - maintains a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems.
<li><a href="http://martinfowler.com/eaaCatalog/identityMap.html">Identity Map</a> - each object gets loaded only once by keeping every loaded object in a map
<li><a href="http://martinfowler.com/eaaCatalog/lazyLoad.html">Lazy Load</a> - object that doesn't contain all of the data you need but knows how to get it.
</ul>]]></description>
      <pubDate>Mon, 16 Feb 2009 12:08:47 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPClasses.org: PHP Object-Relational Mapping: ORM or ROM?]]></title>
      <guid>http://www.phpdeveloper.org/news/11186</guid>
      <link>http://www.phpdeveloper.org/news/11186</link>
      <description><![CDATA[<p>
On the PHPClasses.org blog today <i>Manuel Lemos</i> has <a href="http://www.phpclasses.org/blog/post/82-PHP-ObjectRelational-Mapping-ORM-or-ROM.html">posted a look</a> at ORM - what it is and how you can use it to improve your applications.
</p>
<blockquote>
Object-Relational Mapping, usually referred as ORM, is a software development approach to treat data stored in relational (SQL) database table records as if they were objects. Basically we can create classes with variables that represent fields of a database table. To insert a table record you need to create an object of the class, assign the variable values, and call a function of the class that takes care of inserting the table record
</blockquote>
<p>
He illustrates what it is (brief code samples) and some of the approaches that developers have taken to implementing it. He suggests, however, that they should truely be called ROM (Relational Object Mapping) libraries rather than ORM due to the fact that they map an object (the database tables) back in to PHP objects. He finishes with a list of a few ORM resources and libraries including the one that helps power the PHPClasses website, <a href="http://www.metastorage.net/">Metastorage</a>.
</p>]]></description>
      <pubDate>Fri, 10 Oct 2008 12:09:37 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Developer Tutorials Blog: Getting Started with ORM in PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/10616</guid>
      <link>http://www.phpdeveloper.org/news/10616</link>
      <description><![CDATA[<p>
A <a href="http://www.developertutorials.com/blog/php/getting-started-with-orm-in-php-331/">recent post</a> on the Developer Tutorials blog takes a look at a fundamental part of several of the PHP (and other language) frameworks out there - the Object Relational Mapping (ORM) layer for database access.
</p>
<blockquote>
Instead of direct database access, an ORM layer in a PHP framework can make "objects" stored in a database behave like actual objects from a programming perspective - for example, creating a new "car" stored in the database could involve a call to $car->new(). By abstracting actual database access, web development can be more productive and result in more reliable applications. Here's a quick intro to ORM in PHP.
</blockquote>
<p>
They <a href="http://www.developertutorials.com/blog/php/getting-started-with-orm-in-php-331/">talk about</a> ORM's role in how applications interface with data (abstracted out to objects) and some examples of it in current frameworks - <a href="http://www.cakephp.org">CakePHP</a> and <a href="http://www.symfony.com">Symfony</a>.
</p>]]></description>
      <pubDate>Wed, 16 Jul 2008 09:35:27 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Zend Developer Zone: PHP and your domain model with Doctrine ORM]]></title>
      <guid>http://www.phpdeveloper.org/news/9535</guid>
      <link>http://www.phpdeveloper.org/news/9535</link>
      <description><![CDATA[<p>
On the Zend Developer Zone, <i>jonwage</i> has <a href="http://devzone.zend.com/article/3028-PHP-and-your-domain-model-with-Doctrine-ORM">posted about</a> an ORM (Object-Relational mapping) he came across that can help abstract out your interface with your backend database - <a href="http://www.phpdoctrine.org/">Doctrine</a>.
</p>
<blockquote>
One of its key features is the ability to optionally write database queries in an OO (object oriented) SQL-dialect called DQL inspired by Hibernates HQL. This provides developers with a powerful alternative to SQL that maintains a maximum of flexibility without requiring needless code duplication.
</blockquote>
<p>
The <a href="http://www.phpdoctrine.org/">project's page</a> gives the full details on the features it offers and has links to the <a href="http://www.phpdoctrine.org/download">latest downloads</a> so you can try it out for yourself. There's even <a href="http://www.phpdoctrine.org/blog">a blog</a> you can subscribe to to keep up to date.
</p>]]></description>
      <pubDate>Thu, 31 Jan 2008 08:40:00 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Sebastian Bergmann's Blog: SQL Puzzle]]></title>
      <guid>http://www.phpdeveloper.org/news/9176</guid>
      <link>http://www.phpdeveloper.org/news/9176</link>
      <description><![CDATA[<p>
<i>Sebastian Bergmann</i> has figured out <a href="http://sebastian-bergmann.de/archives/721-SQL-Puzzle.html">half of the puzzle</a> he was working on but is still a bit stuck on the second half. He knows how to mine information from Subversion, but not they queries to ask the database for the info he needs.
</p>
<blockquote>

I have written a small <a href="http://www.php.net/">PHP</a> script (the initial version of the script can be found <a href="http://shiflett.org/blog/2007/dec/php-advent-calendar-day-3">here</a>) to import the relevant data from a <a href="http://subversion.tigris.org/">Subversion</a> repository into the following tables of a relational database. [...] What I need now is two queries to ask the database
</blockquote>
<p>
There's already been <a href="http://sebastian-bergmann.de/archives/721-SQL-Puzzle.html#comments">tons of comments</a> in an effort to help him out, but it doesn't look quite like he's resolved the issue just yet.
</p>
<p>
<b>UPDATE 12.06.207</b>: Seems he's <a href="http://sebastian-bergmann.de/archives/724-BugMiner.html">found a solution</a> that'll work for him - <a href="http://www.phpunit.de/browser/svn_bug_miner">here's the script</a>.
</p>]]></description>
      <pubDate>Wed, 05 Dec 2007 08:46:00 -0600</pubDate>
    </item>
  </channel>
</rss>
