<?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, 18 May 2013 20:09:42 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Simon Holywell: Idiorm and Paris 1.3.0 released - the minimalist ORM and fluent query builder for PH]]></title>
      <guid>http://www.phpdeveloper.org/news/19245</guid>
      <link>http://www.phpdeveloper.org/news/19245</link>
      <description><![CDATA[<p>
<i>Simon Holywell</i> has a new post to his site about a project that aims to be a minimalist ORM library and make it easier to built queries on the fly for your applications (and is installable via Composer) - the <a href="http://simonholywell.com/post/2013/01/idiorm-and-paris-the-minimalist-orm.html">Idorm + Paris combination</a>.
</p>
<blockquote>
Idiorm is a PHP ORM that eschews complexity and deliberately remains lightweight with support for PHP5.2+. [...] However, having said this, Idiorm is very powerful and it makes most of the queries PHP applications require pain free. Some of these features include fluent query building, multiple connection support and result sets for easy record manipulation. Paris sits on top of Idiorm to provide a simplified active record implementation based upon the same minimalist philosophy. 
</blockquote>
<p>
He includes examples in the post of both queries with Idiorm - simple things like creating and finding records - and using Paris to make models out of PHP objects. He also talks some about the current state of the project, recent advancements and some of the things they're looking to do with it in the future (including dropping PHP 5.2 support and use late static binding).
</p>]]></description>
      <pubDate>Wed, 27 Feb 2013 10:33:33 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Zend Developer Zone: Design Patterns I Hate]]></title>
      <guid>http://www.phpdeveloper.org/news/16354</guid>
      <link>http://www.phpdeveloper.org/news/16354</link>
      <description><![CDATA[<p>
On the Zend Developer Zone today there's a new post from <i>Keith Casey</i> about some of the <a href="http://devzone.zend.com/article/14938-Design-Patterns-I-Hate">design patterns he hates</a> - ones that are misused too often and have become more of a "worst practice" at times than others.
</p>
<blockquote>
To be clear, I think <a href="http://devzone.zend.com/article/14003-My-Favorite-Design-Patterns">Design Patterns have their place</a>. When used properly, they can make our lives easier and our code better. When they're misused - "<a href="http://en.wikipedia.org/wiki/Law_of_the_instrument">If the only tool you have is a hammer..</a>" - then they can become the bane of our existence. Unfortunately, some Design Patterns seem more susceptible to this than others. So maybe this is less "design patterns I hate" and more of "design patterns that have been abused beyond all sense of reason"... I'll let you decide.
</blockquote>
<p>
He has three of the most commonly misused design patterns in his list. Anyone who has looked into using patterns in their applications will recognize them:
</p>
<ul>
<li>Active Record
<li>Factory
<li>Singleton
</ul>
<p>
For each, he describes some of the bad implementations he's seen and notes that, while these are commonly abused, they can still be redeemed by being used appropriately.
</p>]]></description>
      <pubDate>Wed, 18 May 2011 10:18:21 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Zend Developer Zone: New PHP5.3+ Framework: Jolt]]></title>
      <guid>http://www.phpdeveloper.org/news/14956</guid>
      <link>http://www.phpdeveloper.org/news/14956</link>
      <description><![CDATA[<p>
On the Zend Developer Zone today there's <a href="http://devzone.zend.com/article/12413-New-PHP5.3-Framework-Jolt">a new post</a> from <i>Vic Cherubini</i> about a new PHP 5.3 only framework - <a href="http://github.com/leftnode/Jolt">Jolt</a>.
</p>
<blockquote>
Since [I wrote a previous framework], PHP5.3 was released and added a whole slew of features. Wanting to take advantage of them, I rewrote (and renamed) the entire framework from Artisan System to Jolt. The interesting thing about Jolt is that it intentionally doesn't come with any type of ORM or ActiveRecord classes. Because I believe that Models should be fat, and controllers skinny, the model framework is left entirely up to the developer.
</blockquote>
<p>
The <a href="http://github.com/leftnode/Jolt">README on the github repository</a> talks about why he decided to make his own framework, some of the features and functionality it includes and an example of it in action (a boostrap file).
</p>]]></description>
      <pubDate>Fri, 13 Aug 2010 10:50:05 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Community News: A PHP 5.3 ActiveRecord]]></title>
      <guid>http://www.phpdeveloper.org/news/12557</guid>
      <link>http://www.phpdeveloper.org/news/12557</link>
      <description><![CDATA[<p>
<i>Jacques Fuentes</i> has submitted some information about an ActiveRecord tool he's developed that's similar to the pattern found in Ruby On Rails and can be found <A href="http://github.com/kla/php-activerecord">here</a>.
</p>
<blockquote>
It is extremely similar to ActiveRecord for Ruby on Rails. We
believe our project is offering a better programming experience than
propel/doctrine since it does not require effort to get started.
Propel/doctrine both require that you use yaml/xml files or column
mapping in your model classes. We use show fields to 'magically' load
this in the background eliminating the tedious requirement of mapping
your schema to a file.
</blockquote>
<p>
<a href="http://www.derivante.com/2009/05/19/php-activerecord-available-for-beta-testing/">The code</a> makes use of some of the features of the upcoming PHP 5.3 release (but won't work with versions prior to that). If you'd like to try it out, you can <a href="http://github/kla/php-activerecord">grab the code here</a>.
</p>]]></description>
      <pubDate>Sat, 23 May 2009 23:58:19 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[DevShed: The mysqli Extension and the Active Record Pattern]]></title>
      <guid>http://www.phpdeveloper.org/news/12344</guid>
      <link>http://www.phpdeveloper.org/news/12344</link>
      <description><![CDATA[<p>
DevShed.com has <a href="http://www.devshed.com/c/a/PHP/The-mysqli-Extension-and-the-Active-Record-Pattern/">posted the seventh article</a> in their series looking at the Active Record design pattern in PHP applications. In this latest tutorial they show how to replace the older MySQL client libraries and use the newer <a href="http://php.net/mysqli">mysqli</a> client instead.
</p>
<blockquote>
Well, as you'll surely recall, I built this class by using the old MySQL library included with the PHP distribution, which is good and efficient. But it's worth making the effort to see how this sample class can be rewritten by using the newer, revamped "mysqli" extension. Thus, this last episode will be dedicated exclusively to doing this, so you can have at your disposal an enhanced versions of the class.
</blockquote>
<p>
For most of the code, you won't see too much of a change - the methods are named similarly and the results are references differently, but you shouldn't have to make too much of a change.
</p>]]></description>
      <pubDate>Wed, 15 Apr 2009 10:27:56 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[DevShed:  Refactoring the MySQL Abstraction Class with the Active Record Pattern]]></title>
      <guid>http://www.phpdeveloper.org/news/12296</guid>
      <link>http://www.phpdeveloper.org/news/12296</link>
      <description><![CDATA[<p>
DevShed has <a href="http://www.devshed.com/c/a/PHP/Refactoring-the-MySQL-Abstraction-Class-with-the-Active-Record-Pattern">the latest article</a> in their tutorial series looking at the Active Record design pattern posted today. This time they focus on a bit of refactoring to make their MySQL abstraction class a bit easier to use and work better.
</p>
<blockquote>
As I stated in the end of the [previous] tutorial, however, some methods of this sample class implement redundant business logic, and as a consequence it's necessary to refactor them to fix this issue in a quick and simple manner. Thus, in the next few lines I'll be explaining how to accomplish this process progressively, and as always, accompanied by the corresponding code samples.
</blockquote>
<p>
They change up some of the CRUD (Create, Read, Update, Delete) functions by dynamically constructing the SQL and updating the fetch functions to allow for more modifiers like "LIKE" or "LIMIT".
</p>]]></description>
      <pubDate>Wed, 08 Apr 2009 07:56:18 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[DevShed: Utilizing the LIMIT Clause with the Active Record Pattern]]></title>
      <guid>http://www.phpdeveloper.org/news/12245</guid>
      <link>http://www.phpdeveloper.org/news/12245</link>
      <description><![CDATA[<p>
DevShed continues their series on the Active Record pattern in PHP with <a href="http://www.devshed.com/c/a/PHP/Utilizing-the-LIMIT-Clause-with-the-Active-Record-Pattern/">this new article</a> implementing the LIMIT statement on your abstraction class.
</p>
<blockquote>
In its current version, it'll be able to accomplish only a few basic database operations tasks. Therefore, this fifth article of the series will be focused on enabling the class to fetch database rows by using the LIMIT clause.
</blockquote>
<p>
They <a href="http://www.devshed.com/c/a/PHP/Utilizing-the-LIMIT-Clause-with-the-Active-Record-Pattern/2/">add the LIMIT clause</a> as a part of its own function and its own SQL statement. You define the number of rows to fetch, the table to fetch it from and the offset to start from. The SQL is passed off to their fetchRow statement and the results are returned in an array.
</p>]]></description>
      <pubDate>Tue, 31 Mar 2009 12:58:35 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[DevShed: The LIKE Clause and the Active Record Pattern]]></title>
      <guid>http://www.phpdeveloper.org/news/12197</guid>
      <link>http://www.phpdeveloper.org/news/12197</link>
      <description><![CDATA[<p>
DevShed continues their look at the Active Record pattern with <a href="http://www.devshed.com/c/a/PHP/The-LIKE-Clause-and-the-Active-Record-Pattern">the next part</a> of their seven part series - extending their MySQL class even further.
</p>
<blockquote>
In its current incarnation, this class's functionality is limited, regardless of its decent level of SQL abstraction. Therefore, in this fourth part of the series I'm going to enhance it by making it capable of working with LIKE clauses in a straightforward way. 
</blockquote>
<p>
They look at using LIKE to match values in various columns of the tables and add in a fetchLike method that lets you specify the column to search, the pattern to match on and the table to search in.
</p>]]></description>
      <pubDate>Tue, 24 Mar 2009 12:07:39 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[DevShed: Running Conditional Select Statements with the Active Record Pattern]]></title>
      <guid>http://www.phpdeveloper.org/news/12157</guid>
      <link>http://www.phpdeveloper.org/news/12157</link>
      <description><![CDATA[<p>
DevShed continues their look at the Active Record pattern with <a href="http://www.devshed.com/c/a/PHP/Running-Conditional-Select-Statements-with-the-Active-Record-Pattern/">this third part</a> of the series focusing on a new method in their class that will make select requests for the Active Record layer.
</p>
<blockquote>
If you're a PHP programmer who wants to learn how to implement the active record pattern within a MySQL abstraction class to make your database-driven applications more robust and maintainable, then look no further.  [...] In this third chapter of the series I'm going to show you how to add a new method to the class. It will be charged with executing conditional SELECT statements via a modified version of the active record pattern.
</blockquote>
<p>
After reviewing the CRUD functionality from the previous articles, they <a href="http://www.devshed.com/c/a/PHP/Running-Conditional-Select-Statements-with-the-Active-Record-Pattern/2/">add in the new method</a> - a fetchWhere function that allows the user to submit a table name and the parameters to add to the where clause as an array. Some <a href="http://www.devshed.com/c/a/PHP/Running-Conditional-Select-Statements-with-the-Active-Record-Pattern/3/">sample code</a> is included.
</p>]]></description>
      <pubDate>Wed, 18 Mar 2009 07:58:54 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[DevShed: Updating and Deleting Database Records with the Active Record Pattern]]></title>
      <guid>http://www.phpdeveloper.org/news/12120</guid>
      <link>http://www.phpdeveloper.org/news/12120</link>
      <description><![CDATA[<p>
DevShed has posted <a href="http://www.devshed.com/c/a/PHP/Updating-and-Deleting-Database-Records-with-the-Active-Record-Pattern/">the next article</a> in their Active Record series. This time it's a look at updating and deleting records from the database (the <a href="http://www.phpdeveloper.org/news/12075">previous article</a> was about selecting and inserting).
<p>
<blockquote>
This pattern permits you to achieve a high level of abstraction when performing typical operations, such as insertions, updates and deletions of records, since all of these tasks are handled transparently by data mappers objects or a data access class. [...] Now, it's time to learn how to use the active record pattern for performing database updates and deletions in a few simple steps.
</blockquote>
<p>
After <a href="http://www.devshed.com/c/a/PHP/Updating-and-Deleting-Database-Records-with-the-Active-Record-Pattern/1/">reviewing</a> the previous article, they add <a href="http://www.devshed.com/c/a/PHP/Updating-and-Deleting-Database-Records-with-the-Active-Record-Pattern/2/">some new features</a> onto the MySQL access class to let you update and remove data through a similar interface.
</p>]]></description>
      <pubDate>Thu, 12 Mar 2009 09:35:02 -0500</pubDate>
    </item>
  </channel>
</rss>
