<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="0.92"><channel><title>Php Object Generator Blog</title>
<link>http://www.phpobjectgenerator.com/plog/</link>
<description>A weblog about the Php Object Generator (POG) project, Databases  and Php Code Generators in general.</description>
<feedburner:info uri="phpobjectgeneratorblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/xml" href="http://www.phpobjectgenerator.com/plog/rss" /><item><title>Using POG with Flex</title>
<description>&lt;p&gt;Recently, we’ve been contacted by Justin Opitz, a flash developer, because he was trying to get &lt;a href="http://www.phpobjectgenerator.com"&gt;POG&lt;/a&gt; to work with &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt;. After playing with the configuration for a few days, he was able to get it working. His solution looks like it would be extemely helpful to anyone else trying to get Flex working with any lightweight PHP library. &lt;/p&gt;
	&lt;p&gt;&lt;a href="http://jwopitz.wordpress.com/2008/03/12/tutorial-flex-amfphp-pog/"&gt;Justin’s POG + Flex solution&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;We welcome other input from other flash developers who have worked or are currently with POG. So, don’t hesitate to &lt;a href="mailto:pogguys@phpobjectgenerator.com"&gt;contact us&lt;/a&gt; with your problems/questions.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=HL_khpjCYIU:Xcfaeh0ue54:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=HL_khpjCYIU:Xcfaeh0ue54:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/HL_khpjCYIU/using-pog-with-flex</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/159/using-pog-with-flex</feedburner:origLink></item>
<item><title>Optimizing your web application</title>
<description>&lt;p&gt;So you’ve got your web application up and running. Maybe you’re using &lt;a href="http://www.phpobjectgenerator.com"&gt;POG&lt;/a&gt; for all your database abstraction needs, maybe not. But you want to optimize your entire application/website and make it snappier and more responsive. Here are a few things that we’ve done ourselves and definitely recommend:&lt;/p&gt;
	&lt;p&gt;1. First and foremost, if you’re not using POG as a database abstraction tool, you should. &lt;a href="http://www.phpobjectgenerator.com/php_code_generator/introduction_php_code_generator.php"&gt;Here’s why&lt;/a&gt;.  We’ve optimized the hell out of POG and released version 3 a few months ago and it’s the fastest thing we’ve ever seen in its category.&lt;/p&gt;
	&lt;p&gt;2. Use HTTP compression (aka gzip) on your server. If you’re running Apache as your server, you’ll need to enable/install mod_gzip. You do need root access if you want to do it manually. Else try contacting your host provider and ask that they enable it for you. This should speed up the loading of pages significantly. &lt;/p&gt;
	&lt;p&gt;More info:&lt;br /&gt;
&lt;a href="http://www3.lehigh.edu/images/userImages/cdh3/Page_3456/LU-CSE-02-002.pdf"&gt;Additional info 1&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.ibm.com/developerworks/web/library/wa-httpcomp/"&gt;Additional info 2&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;3. Use an opcode cache. We use &lt;a href="http://xcache.lighttpd.net/"&gt;XCache&lt;/a&gt; and we love it. XCache essentially caches all the POG classes in memory, so that each time a method is called, PHP doesn’t have to interpret the code again and again.&lt;/p&gt;
	&lt;p&gt;These 3 steps can dramatically boost your application speed. Give them a try, and let us know if you find that it helps, or if you know of any other ways.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=-iI9nI_AwnA:fxU4CkkwfOI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=-iI9nI_AwnA:fxU4CkkwfOI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/-iI9nI_AwnA/optimizing-your-web-application</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/155/optimizing-your-web-application</feedburner:origLink></item>
<item><title>Regenerating large objects</title>
<description>&lt;p&gt;If you deal with large POG objects frequently, you probably noticed that the &lt;a href="http://www.phpobjectgenerator.com/plog/tutorials/40/using-the-code-link"&gt;@link&lt;/a&gt; generated by our code generator become quite bulky and cannot be handled by some browsers such as Internet Explorer. IE truncates the @link, thus rendering it useless.&lt;/p&gt;
	&lt;p&gt;If you find yourself in such a situation, we have a solution for you: &lt;a href="http://www.phpobjectgenerator.com/regenerate.php"&gt;regenerate.php&lt;/a&gt; which allows you to easily regenerate large objects that IE cannot handle. &lt;/p&gt;
	&lt;p&gt;You could also switch to firefox:&lt;br /&gt;
&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7832108692498114";
google_ad_width = 125;
google_ad_height = 125;
google_ad_format = "125x125_as_rimg";
google_cpa_choice = "CAAQ5-WZzgEaCDRYqcloyjDbKK2293M";
google_ad_channel = "0184260428";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=zzEPL3am96w:rodFXQOCnAg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=zzEPL3am96w:rodFXQOCnAg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/zzEPL3am96w/regenerating-large-objects</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/154/regenerating-large-objects</feedburner:origLink></item>
<item><title>PHP4 or PHP5</title>
<description>&lt;p&gt;As more and more hosting providers offer PHP5 as part of their PHP hosting package, developers are faced with a choice: should you stick with PHP4 or migrate your applications to PHP5. It depends:&lt;/p&gt;
	&lt;p&gt;&lt;strong&gt;If you’re starting a new project using POG, we highly recommend starting fresh with PHP5&lt;/strong&gt;. This is the version we ourselves use when creating applications. Why? POG is best appreciated if your entire application is object-oriented (not just the db related stuff that POG does). &lt;a href="http://blog.joshuaeichorn.com/slides/CoolThingsInPHP5/"&gt;Cool Things in PHP5&lt;/a&gt; and &lt;a href="http://gophp5.org/"&gt;Go PHP5&lt;/a&gt; are two good resources that give some additional information about why you should consider upgrading to PHP5.&lt;/p&gt;
	&lt;p&gt;When we started the POG project a year and a half ago, PHP5 adoption was already accelerating; Nevertheless, unlike other ORM libraries or frameworks, we decided to still support PHP4 with almost the same feature-set as PHP5 in order to be useful to the broadest base possible. PHP4 used to be the default language on the &lt;a href="http://www.phpobjectgenerator.com"&gt;POG frontpage&lt;/a&gt;.  In 3.0 however, PHP5 is now the default language. This does &lt;strong&gt;not&lt;/strong&gt; mean, however, that we are going to drop support for PHP4 anytime soon. &lt;/p&gt;
	&lt;p&gt;In fact, POG itself, is written for PHP4 and needs some tweaking to run on PHP5. We plan to re-write it soon so it can be run on systems running PHP5.&lt;/p&gt;
	&lt;p&gt;How about old-er projects? Should you upgrade? Depends. If you’re application is based on POG, we believe upgrading should be a breeze. If you intend to add major features to your project, we recommend you upgrade to PHP5. Support for object-related ‘stuff’ is simply better, while in PHP4, ‘hacks’ are often required. If your project is nearing the end of its lifecycle, then upgrading doesn’t seem worth the effort.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=5FJGqXNpFE8:xBh0RifStas:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=5FJGqXNpFE8:xBh0RifStas:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/5FJGqXNpFE8/php4-or-php5</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/153/php4-or-php5</feedburner:origLink></item>
<item><title>New and Improved</title>
<description>&lt;p&gt;If you’ve used &lt;a href="http://www.phpobjectgenerator.com"&gt;POG&lt;/a&gt; in the past, you probably noticed that we’ve recently updated the look and feel of the website, to go along with the latest version of the code generator. (Version 3). We’ve been planning and working on this update for a long time, and we believe that this version is the best we’ve ever released since we started this project almost 2 years ago now. Our gratitude goes entirely to past and present users who’ve given us their invaluable feedback and suggestions. We’d like to mention that one user stood above the rest when it came to making so great suggestions and feature requests: Andy Law. Thanks to you and everyone else, we believe that POG further distances itself from any other PHP Code Generator in terms of ease of use, simplicity, performance and extensibility.&lt;/p&gt;
	&lt;p&gt;Before we proceed, if for some reason, you’d like to still use the previous version (maybe you’re in the middle of an ongoing project), it can still be accessed at:&lt;/p&gt;
	&lt;p&gt;&lt;a href="http://museum.phpobjectgenerator.com/2.6"&gt;http://museum.phpobjectgenerator.com/2.6&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;&lt;strong&gt;What’s New in 3.0&lt;/strong&gt;&lt;br /&gt;
Pog fetches result set arrays where possible (big performance boost)&lt;br /&gt;
Data encoding is handled within database&lt;br /&gt;
Plugin interface&lt;br /&gt;
Data encoding is off by default&lt;br /&gt;
Data encoding sanity check added to setup&lt;br /&gt;
Delete deep and across for siblings&lt;br /&gt;
Getlist accepts column names as filters&lt;br /&gt;
Getlist, GetChildren and GetSibling return all results if fcv_array is null&lt;br /&gt;
Better session etiquette&lt;br /&gt;
Added database wrapper class for PDO as well. Improved PDO performance&lt;br /&gt;
POG_Base base class is now extended by all objects&lt;br /&gt;
Unit tested plugins, including PHP4&lt;br /&gt;
Made plugin API, POG Base API and Database API uniform to prevent plugin versioning&lt;/p&gt;
	&lt;p&gt;&lt;strong&gt;Database Wrapper improvement/refactoring&lt;/strong&gt;&lt;br /&gt;
Database::NonQuery() performs a non-select query and returns affected rows&lt;br /&gt;
Database::Query() performs a select query and returns the affected rows&lt;br /&gt;
Database::Reader() performs a select query and returns dblink to result set&lt;br /&gt;
Database::FetchRow() perform fetchrow on Reader() results&lt;br /&gt;
Database::InsertOrUpdate() performs an insert or update statement, returns the id of the insert/update&lt;/p&gt;
	&lt;p&gt;&lt;strong&gt;What you can expect with the new version&lt;/strong&gt;&lt;br /&gt;
If you’ve never used POG before, you should still find POG intuitive, easy to understand and use. If you’ve used any previous version, you will notice 2 or 3 things: &lt;/p&gt;
	&lt;p&gt;1. Performance is a non-issue even with very large record sets. (almost as fast as using direct SQL statements).&lt;br /&gt;
2. Data encoding has been turned off by default.&lt;br /&gt;
3. The code generated code is cleaner and much much more extensible (either by official or third party plugins)&lt;/p&gt;
	&lt;p&gt;Our &lt;a href="http://www.phpobjectgenerator.com/plog"&gt;blog&lt;/a&gt; and &lt;a href="http://groups.google.com/group/Php-Object-Generator/browse_thread/thread/f1b6e179ef44856a/"&gt;Discussion forum&lt;/a&gt; contains more information, discussion and threads related to the version 3 transition. Should you need even more information, help or guidance, please leave us a message on the discussion forum and we’ll gladly help.&lt;/p&gt;
	&lt;p&gt;Regards,&lt;br /&gt;
The POG Team.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=pXY4W1_4cOI:SQ-JmyEURK8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=pXY4W1_4cOI:SQ-JmyEURK8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/pXY4W1_4cOI/new-and-improved</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/152/new-and-improved</feedburner:origLink></item>
<item><title>Evolution of a cube</title>
<description>&lt;p&gt;Over the years, Jonathan, our talented designer, played wnd tweaked the POG logo to represent the POG features, as they evolved.&lt;/p&gt;
	&lt;p&gt;When it started about 2 years ago, Jon was assigned the task of designing a logo for what was then, a rather crude code generator. How do you faithfully represent something as basic as a generator, yet make it visually appealing? This was the first iteration:&lt;/p&gt;
	&lt;p&gt;&lt;img src="/plog/images/88.jpg" alt="php code generator" style="height:42px;width:42px" /&gt;&lt;/p&gt;
	&lt;p&gt;Simple and to the point. We decided to use it on our &lt;a href="http://www.phpobjectgenerator.com"&gt;frontpage&lt;/a&gt;. The hand-drawn look illustrates exactly the raw/undeveloped state in which the PHP objects currently are when they are being defined by the user.&lt;/p&gt;
	&lt;p&gt;We then needed a variation of this idea for Page 2, when the objects have been generated. Jon came up with a ‘golden’ look for the cube. &lt;em&gt;The generated code is as good as Gold&lt;/em&gt;, he reasoned. We decided he was right.&lt;/p&gt;
	&lt;p&gt;&lt;img src="/plog/images/59.jpg" alt="PHP code generator - What is POG?" style="height:78px;width:88px" /&gt;&lt;/p&gt;
	&lt;p&gt;Then came the time to design some other variations of the cube for our &lt;a href="http://www.phpobjectgenerator.com/plog/article/65/a-short-video-of-the-pog-setup-process"&gt;Setup process&lt;/a&gt;. Once again, the design was simple and elegant.&lt;/p&gt;
	&lt;p&gt;&lt;img src="/plog/images/60.jpg" alt="PHP code generator - What is POG Setup?" style="height:89px;width:106px" /&gt;&lt;/p&gt;
	&lt;p&gt;Now, as we get ready to release version 3, we wanted to tweak the logo a bit more so that it reflects more accurately what we’re trying to achieve:&lt;/p&gt;
	&lt;p&gt;1. Flexibility&lt;br /&gt;
2. Speed and &lt;br /&gt;
3. Simplicity&lt;/p&gt;
	&lt;p&gt;And the result is:&lt;/p&gt;
	&lt;p&gt;&lt;img src="/plog/images/90.gif" alt="php code generator 3" style="height:50px;width:51px" /&gt;&lt;/p&gt;
	&lt;p&gt;I personally think that once again, Jon was able to capture what this next version of POG is all about and translate it to something as simple as a cube. To him, I say thanks once again for a job well done. Questions, Comments? &lt;a href="http://groups.google.com/group/Php-Object-Generator"&gt;Talk to us&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=79UALZUg0EM:7fQ77euBjuo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=79UALZUg0EM:7fQ77euBjuo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/79UALZUg0EM/evolution-of-a-cube</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/151/evolution-of-a-cube</feedburner:origLink></item>
<item><title>POG Museum</title>
<description>&lt;p&gt;To prepare for the 3.0 release, we’ve tagged 2 other milestone versions in the SVN directory: &lt;/p&gt;
	&lt;p&gt;&lt;a href="http://subversion.phpobjectgenerator.com/svn/repository/pog.tags/2.1"&gt;version 2.1&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://subversion.phpobjectgenerator.com/svn/repository/pog.tags/2.6"&gt;version 2.6&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;To download the code, simply use a SVN client (username:guest, no password)&lt;/p&gt;
	&lt;p&gt;so that users can still download previous versions of the generator with ease. Although we do recommend using 3.0 as soon as it’s released, we realize that some developers may still want access to these 2 important releases.&lt;/p&gt;
	&lt;p&gt;&lt;strong&gt;Release 2.1&lt;/strong&gt;&lt;br /&gt;
Supports other databases besides mysql: firebird, sqlite, postgresql etc. This version supports 1-1 and 1-many relations. Includes &lt;a href="http://www.phpobjectgenerator.com/plog/article/70/introducing-php-object-generator-version-16"&gt;POG Setup.&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;&lt;strong&gt;Release 2.6&lt;/strong&gt;&lt;br /&gt;
The most stable and polished version up to now. It supports 1-1, 1-many and many-many relations. This version supports mysql 4x and 5x as the database. Includes &lt;a href="http://www.phpobjectgenerator.com/plog/article/70/introducing-php-object-generator-version-16"&gt;POG Setup.&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;&lt;strong&gt;Release 3.0&lt;/strong&gt; (future)&lt;br /&gt;
Supports mysql only. Everything from 2.6 + Significant performance improvements in certain areas, plugin (extensible) architecture. Includes &lt;a href="http://www.phpobjectgenerator.com/plog/article/70/introducing-php-object-generator-version-16"&gt;POG Setup.&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;As soon as 3.0 is released, we’ll tag it as well and add it to the list. &lt;br /&gt;
For those of you not interested in downloading the code and simply want access to the online generator, you can access both of the mentioned releases in the POG “museum” at:&lt;/p&gt;
	&lt;p&gt;&lt;a href="http://museum.phpobjectgenerator.com/2.1"&gt;http://museum.phpobjectgenerator.com/2.1&lt;/a&gt; &lt;br /&gt;
and&lt;br /&gt;
&lt;a href="http://museum.phpobjectgenerator.com/2.6"&gt;http://museum.phpobjectgenerator.com/2.6&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;Note that we will actively develop and support 3.0 when it is released. The previous versions will not be actively supported. They are provided for convenience.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=Fbpo1p6aSTs:Qh7ROtsUzaM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=Fbpo1p6aSTs:Qh7ROtsUzaM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/Fbpo1p6aSTs/previous-versions</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/150/previous-versions</feedburner:origLink></item>
<item><title>POG 3.0 alpha</title>
<description>&lt;p&gt;We’ve just made a commit of the alpha version of 3.0 to the SVN&lt;br /&gt;
repository.&lt;/p&gt;
	&lt;p&gt;The version has also been refreshed on &lt;a href="http://beta.phpobjectgenerator.com"&gt;http://beta.phpobjectgenerator.com&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;This early version is fully workable (though there are still other&lt;br /&gt;
features we need to add) and is meant for hardcore POG developers to&lt;br /&gt;
play with.&lt;/p&gt;
	&lt;p&gt;Things to look for in 3.0 alpha.&lt;/p&gt;
	&lt;p&gt;1)  Speed. &lt;br /&gt;
2)  Plugin interface.&lt;br /&gt;
3)  Other smaller improvements.&lt;/p&gt;
	&lt;p&gt;For more details and to give feedback, take a look at the &lt;a href="http://groups.google.com/group/Php-Object-Generator/t/f1b6e179ef44856a"&gt;3.0 alpha thread&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=hV74cDRuYJI:4ts1ZmEx_nU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=hV74cDRuYJI:4ts1ZmEx_nU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/hV74cDRuYJI/php-30-alpha</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/149/php-30-alpha</feedburner:origLink></item>
<item><title>Initial Performance results Part 2</title>
<description>&lt;p&gt;A couple of weeks ago, we &lt;a href="http://www.phpobjectgenerator.com/plog/article/146/initial-performance-results"&gt;published&lt;/a&gt; some of results of the performance tests ahead of the upcoming release of 3.0. &lt;/p&gt;
	&lt;p&gt;Here are some more results obtained for the same amount of data (5000 rows, or should we say &lt;strong&gt;&lt;em&gt;objects&lt;/em&gt;&lt;/strong&gt;).&lt;/p&gt;
	&lt;p&gt;After some more optimizations, mostly by letting the code generator do what a code generator does best: generate all the object-specific attributes, within the php files, we eliminate the need for run-time evaluations and reflections, allowing us to shave off, on average 100ms more off the already-promising results from last time. See for yourself:&lt;/p&gt;
	&lt;p&gt;&lt;img src="/plog/images/87.jpg" alt="php code generator" style="height:407px;width:550px" /&gt;&lt;/p&gt;
	&lt;p&gt;With these promising results, our intent, is to break the annoying myth that some have, that &lt;a href="http://www.phpobjectgenerator.com"&gt;POG&lt;/a&gt;, or ORM in general, is a luxury that comes at the expense of performance and scalability.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=1wt3ZInSv6M:i9asV_EO0w4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=1wt3ZInSv6M:i9asV_EO0w4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/1wt3ZInSv6M/initial-performance-results-part-2</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/148/initial-performance-results-part-2</feedburner:origLink></item>
<item><title>Initial performance results</title>
<description>&lt;p&gt;The initial performance results between 3.0 and the current version of POG (2.6) are very promising! See for yourself:&lt;/p&gt;
	&lt;p&gt;Profiler results for GetList (5000 objects) – POG 2.6&lt;/p&gt;
	&lt;p&gt;&lt;img src="/plog/images/83.jpg"/&gt;&lt;/p&gt;
	&lt;p&gt;&lt;img src="/plog/images/84.jpg"/&gt;&lt;/p&gt;
	&lt;p&gt;Profiler results for GetList (5000 objects) – POG 3.0&lt;/p&gt;
	&lt;p&gt;&lt;img src="/plog/images/85.jpg"/&gt;&lt;/p&gt;
	&lt;p&gt;&lt;img src="/plog/images/86.jpg"/&gt;&lt;/p&gt;
	&lt;p&gt;As you may have noticed in the screenshots, the initial intention for the tests were initially to see if the &lt;a href="http://www.phpobjectgenerator.com/plog/article/145/proposal-pog-30-object-model"&gt;new extendable architecture&lt;/a&gt; planned for 3.0 will affect performance in a negative way. Not only did we find that it wouldn’t, but combined with the optimization efforts that we also have planned for 3.0, we find that the next version of &lt;a href="http://www.phpobjectgenerator.com"&gt;POG&lt;/a&gt; will be an order of magnitude faster for operations such as &lt;a href="http://www.phpobjectgenerator.com/plog/tutorials/29/using-the-code-getlist"&gt;GetList&lt;/a&gt;.  &lt;/p&gt;
	&lt;p&gt;We are trying to finalize the design of a nifty little feature before we are able to publish the plugin model so that developers can start converting their custom code in POG plugins. We’ll post more details soon. &lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=OFaSpyPtiJc:uCjXGzr1y3s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=OFaSpyPtiJc:uCjXGzr1y3s:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/OFaSpyPtiJc/initial-performance-results</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/146/initial-performance-results</feedburner:origLink></item>
<item><title>Proposal: POG 3.0 object model</title>
<description>&lt;p&gt;There are some exciting changes in the works for the POG 3.0 object model. We know that our &lt;a href="http://www.phpobjectgenerator.com/plog/tutorials/39/manifesto"&gt;original manifesto&lt;/a&gt; has been (and still is) &lt;em&gt;POG  is a &lt;a href="http://www.phpobjectgenerator.com"&gt;code generator&lt;/a&gt;, not a framework&lt;/em&gt;. However, to put the new model into context, we cannot avoid but talk about how we think POG objects will be used in the context of a web application and therefore, what follows may sound a litte bit frame-worky. So we apologize in advance about that.&lt;/p&gt;
	&lt;p&gt;We believe this is the simplest and most traditional way POG objects are used in a project.&lt;/p&gt;
&lt;pre&gt;
&lt;a project&gt;
- &lt;generated pog objects&gt;
- &lt;generated setup app&gt;
- &lt;objects that extend pog objects (optional)&gt;
&lt;/pre&gt;
Developers who then wanted to customize the generated code could either:
	&lt;ol&gt;
		&lt;li&gt;Manually edit the POG objects by hand&lt;/li&gt;
		&lt;li&gt;Create objects that extend the generated objects and put their custom logic/rules in the extended objects.&lt;/li&gt;
	&lt;/ol&gt;
	&lt;p&gt;Note: we personally have been using #2 up to this point.&lt;/p&gt;
	&lt;p&gt;The “edge” that this model has over other dynamic ORM frameworks is that since the code is generated, it is:
	&lt;ul&gt;
		&lt;li&gt;clearer/more easily understood by the developer.&lt;/li&gt;
		&lt;li&gt;doesn’t need pages of API documentation&lt;/li&gt;
		&lt;li&gt;easier to use&lt;/li&gt;
		&lt;li&gt;works better with IDEs that support code completion.&lt;/li&gt;
		&lt;li&gt;faster&lt;/li&gt;
		&lt;li&gt;more lightweight&lt;/li&gt;
		&lt;li&gt;less coupled with other application code&lt;/li&gt;
		&lt;li&gt;extensive changes can be done to one class without effecting everything – i.e. customizing a special class is a breeze, whereas in a framework, adjustments to the framework itself can prove catastrophic for special&lt;br /&gt;
cases.&lt;/p&gt;
	&lt;p&gt;The one main drawback was that it was less extensible than dynamic frameworks: if the developer manually modified the generated objects to include custom code, these changes would have to be tracked/updated whenever the objects were regenerated. If the user extended the objects with custom logic, the custom logic would be immune to code regeneration, but could not be used across different projects.&lt;/p&gt;
	&lt;p&gt;&lt;strong&gt;Being more extensible:&lt;/strong&gt;&lt;br /&gt;
In order to achieve a greater level of extensibility and still keep the advantages mentioned above, POG 3.0 will have a slightly modified object model that will allow for &lt;strong&gt;POG plugins&lt;/strong&gt; ...or should we say … Plogins?! .  Aaanyways, this is how a project may look like under 3.0&lt;/p&gt;
&lt;pre&gt;
&lt;a project&gt;
- &lt;generated pog objects&gt;
- &lt;generated setup app&gt;
- &lt;objects that extend pog objects (optional)&gt;
- &lt;pog plugins (optional)&gt;
&lt;/pre&gt;
	&lt;p&gt;Plugins will allow developers to have a larger set of available features from which they can pick and choose the ones needed on a project level and not have unnecessary things bundled to their project. The basic &lt;a href="http://www.phpobjectgenerator.com/plog/file_download/15"&gt;POG Essentials&lt;/a&gt; and &lt;a href="http://www.phpobjectgenerator.com/plog/file_download/21"&gt;POG Relations&lt;/a&gt; methods will be generated as usual, but additional functions such as those used for data transformation, reporting, data manipulation etc can be added/removed at will through plugins. This model thus provides extensibility while keeping things as light as possible.&lt;/p&gt;
	&lt;p&gt;In the new model:&lt;/p&gt;
	&lt;p&gt;1. All generated objects will inherit from a POG_Base object which will provide general abilities to all POG generated classes&lt;br /&gt;
2. What used to be in the database object will be moved to the POG_Base object (i.e all the db connection handling methods), which will simplify and minimize the code in each object&lt;br /&gt;
3. The POG_Base object will also contain common methods that can be used across objects and which can be used by POG Plugins&lt;br /&gt;
4. Plugins are objects that reside in a special plugin directory.&lt;br /&gt;
5. Plugins can inherit from the POG_Base object. (optional)&lt;br /&gt;
6. Plugins can be used across projects and shared among developers.&lt;br /&gt;
7. Plugins objects must have unique class names that are different from the built-in generated methods (e.g. Save, Delete etc)&lt;br /&gt;
8. Plugins must implement an Execute() function, but everything else is fair game.&lt;/p&gt;
	&lt;p&gt;To summarize, in addition to the performance enhancements and other &lt;a href="http://groups.google.com/group/Php-Object-Generator/t/6210655c137fa200"&gt;cool suggestions&lt;/a&gt; by other POG developers, the main thing we wanted to take into incorporate in 3.0 is &lt;/p&gt;
		&lt;li&gt;How to make POG more extensible&lt;/li&gt;
		&lt;li&gt;How to encourage more developers to contribute&lt;/li&gt;
		&lt;li&gt;How to make the overall POG functionality more useful.
and finally
		&lt;li&gt;Was there a model change needed to achieve the goals above. The answer to this question was obviously yes, and the bottom line is, we hope that this model makes POG more useful and appealing to developers.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;p&gt;As a last note, we’d like to thank all current POG “hardcore” developers who have been giving us great feedback in our &lt;a href="http://groups.google.com/group/Php-Object-Generator"&gt;forum&lt;/a&gt;, in particular,  Andy Law, whose ideas kind-of inspired this new model for 3.0. Thanks Andy! &lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=ylz9tbRKkKw:TCZGNKW3Cx4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=ylz9tbRKkKw:TCZGNKW3Cx4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/ylz9tbRKkKw/proposal-pog-30-object-model</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/145/proposal-pog-30-object-model</feedburner:origLink></item>
<item><title>Suggest a feature</title>
<description>&lt;p&gt;We’re currently looking for feature suggestions for version 3.0. Please let us know on &lt;a href="http://groups.google.com/group/Php-Object-Generator/browse_thread/thread/6210655c137fa200"&gt;this thread&lt;/a&gt;  of our forum. The thread mentions some of the current ideas we’re exploring, such as:&lt;/p&gt;
	&lt;p&gt;-&gt; address performance issues w/ and w/o encoding &lt;br /&gt;
-&gt; plugin architecture + sample plugins &lt;br /&gt;
-&gt; allow encoding on a field level (instead of project level) &lt;br /&gt;
-&gt; simple data integrity checks&lt;br /&gt;
-&gt; code cleanup &lt;br /&gt;
-&gt; compliance with strict mode in PHP5/MySQL5 &lt;/p&gt;
	&lt;p&gt;We’d love to hear your ideas, so let us know as soon as you can what you think &lt;a href="http://www.phpobjectgenerator.com"&gt;POG&lt;/a&gt; is missing and how we can improve it.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=8X1T5ICh580:tliabnOwk1I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=8X1T5ICh580:tliabnOwk1I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/8X1T5ICh580/suggest-a-feature</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/144/suggest-a-feature</feedburner:origLink></item>
<item><title>A new year, A new POG release</title>
<description>&lt;p&gt;&lt;a href="http://www.phpobjectgenerator.com"&gt;POG 2.6&lt;/a&gt; has been released a few weeks ago. This release addresses recent &lt;a href="http://www.phpobjectgenerator.com/plog/tutorials/119/advanced-object-relations"&gt;Relations&lt;/a&gt; bugs that have been discovered since the release of version 2.5&lt;/p&gt;
	&lt;p&gt;For the specific listing of bug fixes, visit our &lt;a href="http://groups.google.com/group/Php-Object-Generator/browse_thread/thread/d865127f68d6e791"&gt;google group&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;We’ve also taken the opportunity to include in our source code, internal PHPUnit tests against which we test the generator before any release. These unit tests are different from &lt;a href="http://www.phpobjectgenerator.com/plog/article/126/php-objects-210-preview"&gt;Setup tests that are included with all generated objects since version 2.1&lt;/a&gt; &lt;/p&gt;
	&lt;p&gt;While the Setup tests make sure that all db operations work correctly (Inserts, Updates, Deletes etc), the phpunit tests, on the other hand, ensure that the objects behave as a expected when they are used programmatically by the users. This  may seem a bit redundant, but essential, the phpunit tests cover areas that may get broken when the generator source code is modified, whereas the setup tests cover areas that may be get broken when the objects are modified directly. Thus the phpunit tests are a superset of the setup tests.&lt;/p&gt;
	&lt;p&gt;The main motivation for including those tests was to encourage code modification/contribution of the generator from other developers, and to ensure that the modifications are reliable. The bottom line is that we believe that this will help us keep and even increase the level of code reliability as we/others introduce more useful features in the generator.&lt;/p&gt;
	&lt;p&gt;If you’ve made modifications to the generator source code, and want to run the tests (on Windows), you need to first make sure you have &lt;a href="http://www.phpunit.de/pocket_guide/3.0/en/installation.html"&gt;PHPUnit installed&lt;/a&gt; . Then, run setup for the sample app corresponding to the installed PHP version. If you have PHP 4 installed, run the /tests/php4/app/setup/index.php script. If you have PHP 5 installed, run the /tests/php5/app/setup/index.php script. This will create the sample tables and perform the SETUP tests.&lt;br /&gt;
Finally, simply run the file “runtests.bat” in the test/phpX/ folder where X can be 4, 5 or 5.1. You should see something like this:&lt;/p&gt;
	&lt;p&gt;&lt;img src="/plog/images/80.jpg" alt="php object generator unit tests" style="height:338px;width:670px" /&gt;&lt;/p&gt;
	&lt;p&gt;If you have any problems running the tests, ensure that the path to phpunit.bat is included somewhere in the PATH environment variable in Windows.  If you have any comments or questions on the latest POG release, feel free to contact us  on the &lt;a href="http://groups.google.com/group/Php-Object-Generator/"&gt;POG Google group&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=N4fZdjuNtuA:hmvIo688O0E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=N4fZdjuNtuA:hmvIo688O0E:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/N4fZdjuNtuA/a-new-year-a-new-pog-release</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/137/a-new-year-a-new-pog-release</feedburner:origLink></item>
<item><title>Many-Many relations</title>
<description>&lt;p&gt;Since POG 1.0 was launched about a year ago now, there has been numerous requests for object relations. POG 2.0 addressed the issues of parent-child (1-many, many-1) relations. Still, more work needed to be done for POG to really be useful in situations where many-many relations were needed. POG 2.5, released about a week ago, finally provides a simple, yet, powerful solution: Sibling Relations.&lt;/p&gt;
	&lt;p&gt;In the POG world, a sibling is an object that relates to one or many other sibling objects. Real world examples include the relations between Magazine and Subscribers: A subscriber can subscribe to one or more different magazines.&lt;/p&gt;
	&lt;p&gt;The object methods generated by POG to abstract many-many relations are similar to the ones generated for parent – child relations. We kept the API consistent so that the objects remain intuitive, and yet, are more powerful. The programmer can almost forget the underlying relations.&lt;/p&gt;
	&lt;p&gt;For instance, let’s say we have a Magazine and Subscriber object which are siblings. To associate a Magazine to a Subscriber, we only need to do something like this:&lt;/p&gt;
	&lt;p&gt;&lt;nocode&gt;&lt;br /&gt;
$subscriber-&gt;AddMagazine($magazine);&lt;br /&gt;
&lt;/nocode&gt;&lt;/p&gt;
	&lt;p&gt;The thing to note here is that if Subscriber and Magazine were parent and child, instead of siblings, the code would still be&lt;/p&gt;
	&lt;p&gt;&lt;nocode&gt;&lt;br /&gt;
$subscriber-&gt;AddMagazine($magazine);&lt;br /&gt;
&lt;/nocode&gt;&lt;/p&gt;
	&lt;p&gt;On the database level, however, the way the data is stored by POG is quite different. In the case of a parent-child relation, the child simply refers to the parentId using a column in the child table. In the case of siblings, POG generates a mapping (join) table which stores the sibling1_id and sibling2_id of related sibling. The data is inserted, retrieved and deleted from this mapping table transparently and does not have to be accessed directly by the developer.&lt;/p&gt;
	&lt;p&gt;More info on sibling relations can be found in the &lt;a href="http://www.phpobjectgenerator.com/plog/file_download/21"&gt;POG relations PDF document&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;We hope that the introduction of sibling relations will help accelerate your development even more.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=Y6XL78Xd2vY:dA4zVATK-EA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=Y6XL78Xd2vY:dA4zVATK-EA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/Y6XL78Xd2vY/many-many-relations</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/136/many-many-relations</feedburner:origLink></item>
<item><title>POG 2.5 Released</title>
<description>&lt;p&gt;This is perhaps the biggest update we’ve done at one time and we’re relieved it’s finally out of the door. Overall POG 2.5 is the result of developer feedback and our own observations while using POG recently in a few medium/large projects.&lt;/p&gt;
	&lt;p&gt;By dropping out-of-the-box support for databases other than MySQL for now, we’ve narrowed our focus in order to deliver a product which is more complete and stable. We also want to accelerate POG’s release cycle, and having to maintain several databases that very few POG users (including us) use was creating some slowdowns.&lt;/p&gt;
	&lt;p&gt;The purpose of this release is to improve on the code base that we had, and provide an even better PHP ORM generator which now fulfills, we believe, 99% of all db requirements in a typical web application. The implementation of Many-many relations in POG follows the mantra that we’ve had since day 1: Keep things clean, simple and easy to use. As such, when you generate Sibling (many-many) objects, you’ll quickly realize that you can almost forget/not care about how the relations are being handled on the database level and instead, focus on application logic. We’ve also kept most method interfaces consistent, for backward compatibility. Thus, upgrading a previous project to POG 2.5 shouldn’t be too difficult.&lt;/p&gt;
	&lt;p&gt;Setup has also been improved to provide a better scaffolding environment. The ability to re-initialize data in all your tables with a few clicks will surely be helpful. We know that it has for us.&lt;/p&gt;
	&lt;p&gt;Entire changelog&lt;/p&gt;
	&lt;p&gt;1. Dropped support for databases other than MYSQL&lt;br /&gt;
2. Improved Parent-Child (1-many, many-1) relations. Bug fixes include – checks that prevent same child from being added more than once to the childList – documented a php ‘bug’ where adding children through a loop must be done by reference – SetChildrenList now does what it was supposed to do: commits changes to the database, making previous children orphans.&lt;/p&gt;
	&lt;p&gt;3. Implemented Sibling (many-many) relations model in Generator as well as Setup&lt;br /&gt;
4. Table structures are now optimized (using NOT NULLS and Indexes)&lt;br /&gt;
5. New crud method: DeleteList&lt;br /&gt;
6. All %List CRUD methods have been made fairly consistent. They now accept the same field-comparator-value array variable ($fcv_array) &lt;br /&gt;
7. All %List CRUD methods are able to generate Disjunctive Normal Form (DNF) queries. i.e. queries containing “OR”&lt;br /&gt;
8. Improved setup options – table to object alignment – drop and recreate tables – drop, recreate tables and re-initialize data – allows bypassing of unit tests – warnings before destroying data – pagination&lt;br /&gt;
9. Fixed all reported/known bugs up to this date.&lt;br /&gt;
10. Fixed some issues (ajax) reported with Setup and IE7&lt;br /&gt;
11. Regenerate object url is now configurable&lt;br /&gt;
12. Updated all documentation&lt;br /&gt;
13. Fixed reported annoyances: – internal metadata array (pog_attribute_type) now keeps the attribute names in their original casing (instead of lower case). If you’re updating an existing project, this can now cause unpredictable results in badly formed Get%List request, if you used to pass attribute_name as lower case. Previously POG would produce the intended result but not anymore in this case. Please review your code thoroughly if you’re upgrading an existing project to 2.5. – Generator gives warning when the attribute list contains duplicates.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=woeuVOLPgH4:RFZPFSGIRw0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=woeuVOLPgH4:RFZPFSGIRw0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/woeuVOLPgH4/pog-25-released</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/135/pog-25-released</feedburner:origLink></item>
<item><title>POG 2.5 beta</title>
<description>&lt;p&gt;For the past 2 months, we’ve spent most of our time using POG in our own web application projects. We’ve taken our own experiences with POG, as well as the feedback we’ve been receiving and made some major improvements to POG’s functionality. The new features will be available in the next version, POG 2.5 which should be released within the next week or two.&lt;/p&gt;
	&lt;p&gt;A preview of POG 2.5 can be found at &lt;a href="http://beta.phpobjectgenerator.com"&gt;http://beta.phpobjectgenerator.com&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;Everything is almost there, we’re now polishing some minor things up. The main changes over the current version are:&lt;/p&gt;
	&lt;p&gt;1. support for databases other than mysql have been dropped.&lt;br /&gt;
2. many-many relations are now supported and unit-tested for all &lt;br /&gt;
versions of php (4, 5, 5.1) &lt;br /&gt;
3. addition of 1 new crud method: DeleteList &lt;br /&gt;
4. all %List crud methods are now capable of accepting ‘OR’ in between &lt;br /&gt;
conditions. &lt;br /&gt;
5. bug fixes. all previously reported bugs have been fixed. &lt;br /&gt;
6. major improvements to parent-child relations have been implemented. &lt;/p&gt;
	&lt;p&gt;The documentation will be updated soon to reflect the code changes. &lt;/p&gt;
	&lt;p&gt;In the meantime, feel free to play with POG 2.5 and let us know what you think.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=9ugcf3MUi_Y:2YAhZ5IbfzQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=9ugcf3MUi_Y:2YAhZ5IbfzQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/9ugcf3MUi_Y/pog-25-beta</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/134/pog-25-beta</feedburner:origLink></item>
<item><title>Automatic table alignment</title>
<description>&lt;p&gt;Automatic table alignment &lt;a href="http://www.phpobjectgenerator.com/plog/article/127/whats-new-in-210"&gt;was recently introduced&lt;/a&gt;, and we’ve personally experienced a &lt;em&gt;further&lt;/em&gt; increase in our productivity. Letting POG Setup take care of keeping objects and tables aligned, really allows you to forget about the underlying database. (Sometimes a bad thing though!)&lt;/p&gt;
	&lt;p&gt;The following are real-life cases where we truly found automatic table alignment indispensable:&lt;/p&gt;
	&lt;p&gt;&lt;em&gt;Scenario A&lt;/em&gt;&lt;br /&gt;
&lt;strong&gt;Schema Changes without any hassle&lt;/strong&gt;&lt;br /&gt;
While working in a small team of 3-5 developers, very often, one of the developers will need to modify the underlying table structure to accommodate for a new attribute. POG setup allows the developer to &lt;a href="http://www.phpobjectgenerator.com/plog/tutorials/40/using-the-code-link"&gt;regenerate the PHP object&lt;/a&gt; class, align his local database and commit the new object(s) to a common code repository when the code is deemed satisfactory . All the remaining developers then simply need to do a repository update and run &lt;a href="http://www.phpobjectgenerator.com/plog/tutorials/69/using-the-code-setup-process"&gt;POG Setup&lt;/a&gt;. Voila! they too have the latest database schema on their machine with database access code that is 100% aligned with the database.&lt;/p&gt;
	&lt;p&gt;&lt;strong&gt;The other side&lt;/strong&gt;&lt;br /&gt;
I have personally experienced work environments where the responsibility boundaries were marked at the database level. That is, where there is a database team and an application team. The problem with this ‘configuration’ is that there is often a misalignment between the database and application because the teams often work at different speeds or due to miscommunication.  This is why I personally believe that the way POG handles things allows for more efficient web teams.&lt;/p&gt;
	&lt;p&gt;&lt;em&gt;Scenario B&lt;/em&gt;&lt;br /&gt;
&lt;strong&gt;Migrating an application from a development machine to a Production machine&lt;/strong&gt;&lt;/p&gt;
	&lt;p&gt;When dealing with a database application, it’s almost certain that the database schema will change by the next version release. Usually, when the application goes live, the production database has to be modified so that it contains the new schema. &lt;/p&gt;
	&lt;p&gt;&lt;a href="http://www.phpobjectgenerator.com/plog/tutorials/69/using-the-code-setup-process"&gt;POG Setup&lt;/a&gt; allows the release manager to automate this step. A script can be written to upload the newest source code and run setup at a specific time. No manual steps are then required and what you have is effectively an automated ‘build’ system.&lt;/p&gt;
	&lt;p&gt;There are a few other scenarios I can think of where the usefulness of automatic table alignment really shines, but the 2 use-cases outlined above are the main ones we’ve personally experienced so far while using POG.&lt;/p&gt;
	&lt;p&gt;Hope this has shown at least a little bit why we love &lt;a href="http://www.phpobjectgenerator.com"&gt;POG&lt;/a&gt; so much!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=r9kC0_T-Yq4:_6wA9acDMxg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=r9kC0_T-Yq4:_6wA9acDMxg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/r9kC0_T-Yq4/automatic-table-alignment</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/131/automatic-table-alignment</feedburner:origLink></item>
<item><title>New version: 2.1.2 released</title>
<description>&lt;p&gt;Last night, POG was updated to 2.1.2, which has some nice improvements over 2.1.0 &amp; 2.1.1. &lt;a href="http://www.phpobjectgenerator.com/plog/article/127/whats-new-in-210"&gt;Release 2.1.0&lt;/a&gt; addressed some shortcomings that &lt;a href="http://www.phpobjectgenerator.com/plog/article/127/whats-new-in-210"&gt;Setup&lt;/a&gt; previously had regarding related/connected objects. 2.1.2, yesterday’s release, addressed a bug identified as well as improved the rendering of connected objects.&lt;/p&gt;
	&lt;p&gt;&lt;strong&gt;Rendering – the old way&lt;/strong&gt;&lt;br /&gt;
In 2.1.0 &amp; 2.1.1, POG setup did not render connected objects fully. i.e. only the non parent/child attributes were rendered. &lt;/p&gt;
	&lt;p&gt;&lt;strong&gt;Rendering – the new way&lt;/strong&gt;&lt;br /&gt;
In 2.1.2, POG setup now renders connected objects fully and gives a true hierarchical view of connected objects. For e.g. if you have an Author object who has many Books, Setup now displays BookList as a clickable node attribute. When expanded, setup renders all book objects and attributes. The following is a screenshot example of how Setup renders parent/children.&lt;/p&gt;
	&lt;p&gt;&lt;img src="/plog/images/79.jpg" style="height:520px;width:588px" /&gt;&lt;/p&gt;
	&lt;p&gt;&lt;strong&gt;Fixes:&lt;/strong&gt;&lt;br /&gt;
The major bug fix made concerned automatic table alignment and connected objects. Previously, the bug caused some object relations to be ‘lost’ each time setup is ran because the parents/children column were being dropped and recreated under certain circumstances. This has now been fixed.&lt;/p&gt;
	&lt;p&gt;&lt;strong&gt;Other improvements&lt;/strong&gt;&lt;br /&gt;
Other improvements include
 – Prevent timeout/max execution time issue when dealing with a large number of objects during Setup and Update
 – Added circular progress indicator in a few places – Fixed a few setup glitches here and there.&lt;/p&gt;
	&lt;p&gt;Hope this gives an overview of what has been improved in the latest version. You can always download and take a look at the &lt;a href="http://www.phpobjectgenerator.com/plog/article/51/pog-source-code-locations"&gt;source code&lt;/a&gt;.&lt;/p&gt;
	&lt;p&gt;Next expected release is now 2.2.0 which will finally introduce many-many relations.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=mjnT7sEYuP4:QVA7t7VW_VI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=mjnT7sEYuP4:QVA7t7VW_VI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/mjnT7sEYuP4/new-version-212-released</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/130/new-version-212-released</feedburner:origLink></item>
<item><title>RSS should work well now</title>
<description>&lt;p&gt;If you have any troubles, please let us know. Thanks.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=zo2kYclnTWk:B-dursq7y_A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=zo2kYclnTWk:B-dursq7y_A:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/zo2kYclnTWk/rss-should-work-well-now</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/129/rss-should-work-well-now</feedburner:origLink></item>
<item><title>RSS feed glitches</title>
<description>&lt;p&gt;In the next little while, some of you might notice a few RSS feed glitches as we move our feed to &lt;a href="http://www.feedburner.com"&gt;Feedburner&lt;/a&gt;. This will make the POG RSS feed more reliable and stable.&lt;/p&gt;
	&lt;p&gt;Sorry for any inconvenience.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=kcXAUvw22XM:X3rTuDQTrnw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?a=kcXAUvw22XM:X3rTuDQTrnw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpObjectGeneratorBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
<link>http://feedproxy.google.com/~r/PhpObjectGeneratorBlog/~3/kcXAUvw22XM/rss-feed-glitches</link><feedburner:origLink>http://www.phpobjectgenerator.com/plog/article/128/rss-feed-glitches</feedburner:origLink></item></channel></rss>
