<?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>Thu, 23 May 2013 07:04:22 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[QaFoo.com Blog: Struct classes in PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/15792</guid>
      <link>http://www.phpdeveloper.org/news/15792</link>
      <description><![CDATA[<p>
On the QaFoo blog today there's <a href="http://qafoo.com/blog/016_struct_classes_in_php.html">a new post</a> looking at building struct classes in PHP (by <i>Kore Nordmann</i>) as a replacement - and a step up - from storing data in structures like arrays.
</p>
<blockquote>
In Apache Zeta Components and in several of my own projects we are using - so called - struct classes to solve this issue: The struct classes do not define any methods but just contain documented properties. They just deal as a data container, similar to a hash map.
</blockquote>
<p>
He mentions a few benefits and drawbacks to using this approach including the fact that, while they're easier to document and can make things clearer in your IDE, they also are objects and are passed by reference by default (leading to possible unintended behavior). That being said, he includes a sample implementation so you can judge for yourself. The example defines a Location with a city and state properties that extends a base Struct class.
</p>]]></description>
      <pubDate>Mon, 24 Jan 2011 09:59:22 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Matthew Weier O'Phinney's Blog: A Simple PHP Publish-Subscribe System]]></title>
      <guid>http://www.phpdeveloper.org/news/11580</guid>
      <link>http://www.phpdeveloper.org/news/11580</link>
      <description><![CDATA[<p>
In a <a href="http://weierophinney.net/matthew/archives/199-A-Simple-PHP-Publish-Subscribe-System.html">new post</a> to his blog <i>Matthew Weier O'Phinney</i> shares a simple publish-subscribe system he's created based on a feature of the Dojo toolkit using the Zend Framework to create an easy notification architecture.
</p>
<blockquote>
The system has elements of Aspect Oriented Programming (AOP), as well as the Observer pattern. Its power, however, is in the fact that an individual object does not need to implement any specific interface in order to act as either a Subject or an Observer; the system is globally available. 
</blockquote>
<p>
The script creates an object that publishes an event. This event then sends off messages to all of the other objects subscribing to it. A code example is included. You also can check out the code from <a href="http://github.com/weierophinney/phly/tree/master/Phly_PubSub">its page on github</a> (as a part of his Phly libraries) and play with it yourself.
</p>]]></description>
      <pubDate>Tue, 16 Dec 2008 10:23:26 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Matthew Weir O'Phinney's Blog: Phly Darcs Repository online]]></title>
      <guid>http://www.phpdeveloper.org/news/5521</guid>
      <link>http://www.phpdeveloper.org/news/5521</link>
      <description><![CDATA[<p>
<i>Matthew Weir O'Phinney</i> has <a href="http://weierophinney.net/matthew/archives/116-Phly-Darcs-Repository-online.html">this note</a> for those working with the <a href="http://weierophinney.net/phly/">Phly PEAR channel</a> - he's added a <a href="http://abridgegame.org/darcs/">darcs repository</a> to manage the contents of the channel.
</p>
<quote>
<i>
If you're not familiar with <a href="http://abridgegame.org/darcs/">darcs</a>, it's a revision control system, similar to <a href="http://www.gnu.org/software/gnu-arch/">GNU Arch</a>  and <a href="http://git.or.cz/">git</a>; changes are kept as patch sets, and repositories are branched simply by checking them out. This makes darcs repositories very flexible, and incredibly easy to implement. Static binaries are available for most systems, which makes it easy to install on systems to which you have no administrator rights.
</i>
</quote>
<p>
There's also a web-based interface to it that uses Perl/XML/XSLT to create it, but he found it a bit constrictive and not customizable at all - so he ported it to PHP (using <a href="http://weierophinney.net/phly/index.php?package=Cgiapp2">Cgiapp2</a>), the result being <a href="http://weierophinney.net/phly/index.php?package=Phly_Darcs">Phly_Darcs</a>.
</p>]]></description>
      <pubDate>Tue, 06 Jun 2006 06:19:50 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Matthew Weir O'Phinney's Blog: Introducing Phly_Struct and Phly_Config]]></title>
      <guid>http://www.phpdeveloper.org/news/5407</guid>
      <link>http://www.phpdeveloper.org/news/5407</link>
      <description><![CDATA[<p>
<i>Matthew Weir O'Phinney</i> has created his own modules that he shares in <a href="http://weierophinney.net/matthew/archives/112-guid.html#extended">this post</a> today - one to manage the config data for the application and another to act as a bridge between the scripts and that configuration store.
</p>
<quote>
<i>
I often find myself needing a configuration module of some sort -- for storing application parameters, bootstrapping, template variables, what have you. The problem, however, is: once I bring them into my project, how can I access them? Better yet, would there be a way to bring in configurations of many types and still access them all in the same way?
</i>
</quote>
<p>
He looked into several of the methods out there, but wasn't pleased with any of them - so he <a href="http://weierophinney.net/matthew/archives/112-guid.html#extended">created his own</a>, the Phly_Struct and Phly_Config modules. He talks briefly about what they are, but gets quickly into the code examples to prove their worth. It's a basic example tying the two of them together and loading some simple values into an instance of the Phly_Config. Both are available from the <a href="http://weierophinney.net/phly/index.php">PHLY: PHP Library PEAR channel</a>.
</p>]]></description>
      <pubDate>Sat, 20 May 2006 10:01:28 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Matthew Weir O'Phinney's Blog: PHP Library Channel]]></title>
      <guid>http://www.phpdeveloper.org/news/5373</guid>
      <link>http://www.phpdeveloper.org/news/5373</link>
      <description><![CDATA[<p>
<i>Matthew Weir O'Phinney</i> has posted <a href="http://weierophinney.net/matthew/archives/110-PHP-Library-Channel.html">this new item</a> on his blog today, a look at his creation of a new PEAR channel (<a href="http://weierophinney.net/phly/">found here</a>) where he's started work on a general use PHP library repository.
</p>
<quote>
<i>
<p>
I've been working on Cgiapp in the past few months, in particular to introduce one possibility for a Front Controller class. To test out ideas, I've decided to port areas of my personal site to Cgiapp2 using the Front Controller. Being the programmer I am, I quickly ran into some areas where I needed some reusable code -- principally for authentication and input handling.
</p>
<p>
So what did I choose? To reinvent the wheel, of course! To that end, I've opened a new PEAR channel that I'm calling <a href="http://weierophinney.net/phly/">PHLY, the PHp LibrarY</a>, named after my blog. 
</p>
</i>
</quote>
<p>
Some of the targets of his project include:
<ul>
<li>Loosely coupled; dependencies should be few, and no base class should be necessary.
<li>Designed for PHP5 and up; all classes should make use of PHP5's features.
<li>Tested; all classes should have unit tests accompanying them.
</ul>
</p>]]></description>
      <pubDate>Tue, 16 May 2006 06:00:08 -0500</pubDate>
    </item>
  </channel>
</rss>
