<?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>Tue, 22 May 2012 12:36:01 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Developer.com: Creating a Custom ACL in PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/17946</guid>
      <link>http://www.phpdeveloper.org/news/17946</link>
      <description><![CDATA[<p>
On Developer.com there's a recent tutorial showing you how to <a href="http://www.developer.com/lang/php/creating-a-custom-acl-in-php.html">create a basic access control list</a> in PHP (not in any specific framework). It allows you to define not only user permissions but groups and group permissions as well.
</p>
<blockquote>
So, what are the advantages of an ACL model? The first advantage is security. Using this model will make your application more secure and less vulnerable to exploits. When securing any program, it is good to give to the user only the privileges he/she needs. That means that, for example, you should not give super administrator privileges to someone who will only manage website content. The ACL security model allows you to do just that. The second advantage is the easiness of user management. You can divide users into groups, while each group has certain access permissions. Also, you can easily add new user groups, delete the old ones or change group permissions.
</blockquote>
<p>
They include the database structure you'll need to make the backend work (four tables) and the code to create an "Acl" class with methods to check a user+group for a permission, get the permissions for a user and get the permissions for a group. It's a pretty simple system and has a lot more that could be added to it to make it more robust, but it's a good start.
</p>]]></description>
      <pubDate>Fri, 11 May 2012 10:53:23 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Refulz.com: CakePHP AclComponent - ACOs, AROs and Mapping]]></title>
      <guid>http://www.phpdeveloper.org/news/17605</guid>
      <link>http://www.phpdeveloper.org/news/17605</link>
      <description><![CDATA[<p>
On the Refulz blog they've posted <a href="http://php.refulz.com/cakephp-aclcomponent-acos-aros-and-mapping/">the next in their series</a> about access control in CakePHP applications. In this new article they look at Access Request Objects (AROs) and Access Control Objects (ACOs) and how they can be managed via the built-in ACL functionality.
</p>
<blockquote>
Continuing with Access Control Lists, we will read about the two Access Control Lists and their mapping. The Access Request Objects (AROs) are a list of the things that seek permissions and the Access Control Objects (ACOs) are the resources on which permissions are required. Both the lists are maintained in the tow tables, namely aros and acos respectively.
</blockquote>
<p>
Included in the post is the SQL you'll need to create the tables for the system to use as well as some basic code to use the AclComponent with the ACOs/AROs. They also show how to use the parentNode method to create parent/child relationships between the objects.
</p>]]></description>
      <pubDate>Wed, 29 Feb 2012 11:38:12 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Devis Lucato's Blog: Select: Inversion of Control]]></title>
      <guid>http://www.phpdeveloper.org/news/17260</guid>
      <link>http://www.phpdeveloper.org/news/17260</link>
      <description><![CDATA[<p>
In a recent post to his blog <i>Devis Lucato</i> introduces the "Inversion of Control" design pattern and <a href="http://lucato.it/inversion-of-control">shares an implementation</a> he's created as an illustration - a Service Locator called <a href="https://github.com/dluc/Select">Select</a>.
</p>
<blockquote>
[In a Service Locator] all the dependencies are provided by a builder, which serves as a registry of dependencies and/or service definitions. The service locator knows how to instantiate each dependency.   Such service exposes methods like 'getMailer()', 'getLogger()' etc.  A service locator centralises the configuration detailing classes and parameters involved on objects instantiations.
</blockquote>
<p>
He includes some sample code showing the structure of a Select implementation using a "Mailer" identifier and definitions of the classes to load for it. He also includes a bit of documentation of the (simple) API you can use to work with the tool - setting namespaces, replacing class definitions, creating definitions and finding the resource associated with a definition (to name a few).
</p>]]></description>
      <pubDate>Wed, 14 Dec 2011 13:34:53 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Community News: PHP version control to move to git]]></title>
      <guid>http://www.phpdeveloper.org/news/16830</guid>
      <link>http://www.phpdeveloper.org/news/16830</link>
      <description><![CDATA[<p>
A little while back, the PHP development group posted a survey of developers asking them which version control system they'd like to see the PHP project use. By an overwhelming margin, <a href="http://news.php.net/php.internals/55293">git has won</a> and things are already in motion to move parts of the project away from subversion.
<p>
In his mailing list post, <i>David Soria Parra</i> explains:
</p>
<blockquote>
After 2 weeks of voting and discussion, I closed the votes today. The results are fairly straightforward. Most of the users want to move to a decentralized version control system. [...] I don't want to make a difference of who voted for what. I think the results are overwhelming
in favor of Git.
</blockquote>
<p>
He'll be working on the spec to make the move for the PHP source over to git and is planning a cut over some time in December. Stay tuned to the <a href="http://news.php.net/php.internals">php.internals</a> mailing list for more details about the move as they come up. 
</p>]]></description>
      <pubDate>Thu, 08 Sep 2011 06:27:08 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Ibuildings techPortal: DPCRadio: Database Version Control without Pain]]></title>
      <guid>http://www.phpdeveloper.org/news/15980</guid>
      <link>http://www.phpdeveloper.org/news/15980</link>
      <description><![CDATA[<p>
The Ibuildings techPortal has posted their latest episode in their DPCRadio podcast series as recorded at the Dutch PHP Conference 2010. <a href="http://techportal.ibuildings.com/2011/03/01/dpcradio-database-version-control-without-pain/">This latest episode</a> is <i>Harrie Verveer</i>'s talk about database version control.
</p>
<blockquote>
We've all read the textbooks and are using version control systems for our code, but our databases are left out in the cold. Every team has their own workaround, ranging from patch files to SQL snippets in the bugtracker, but none is really robust. Unfortunately there is no silver bullet, but there are several tools and best practices that can help you to make your life easier. This talk shows several approaches that can help you to overcome this problem and to control database structure changes in a more sophisticated way.
</blockquote>
<p>
You can either listen <a href="http://techportal.ibuildings.com/2011/03/01/dpcradio-database-version-control-without-pain/">in-page</a> on their player or you can <a href="http://dpcradio.s3.amazonaws.com/2010_006.mp3">download the mp3</a> and listen whenever you'd like. You can find his slides <a href="http://www.slideshare.net/harrieverveer/database-version-control-without-pain-the-dpc-version">here</a> and, as an extra bonus, <a href="http://techportal.ibuildings.com/2011/01/11/database-version-control/">an article</a> on the same topic also on the techPortal.
</p>]]></description>
      <pubDate>Tue, 01 Mar 2011 13:21:13 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Ibuildings techPortal: Database Version Control]]></title>
      <guid>http://www.phpdeveloper.org/news/15720</guid>
      <link>http://www.phpdeveloper.org/news/15720</link>
      <description><![CDATA[<p>
On the Ibuildings techPortal today <i>Harrie Verveer</i> has a new post looking at <a href="http://techportal.ibuildings.com/2011/01/11/database-version-control/">database version control</a> - one of the more difficult topics for development groups - and some of the technology that can be used to help make it a bit simpler.
</p>
<blockquote>
Database version control is something that most developers have to deal with regularly, yet only a few have actually thought about what solution might be best for them. Most people have a solution that sort of works for them, but when you ask them about the subject they are pretty convinced that there must be some better way to manage database changes, they're just not entirely sure what that solution is - but the silver bullet must be out there somewhere, right?
</blockquote>
<p>
He starts where most developers start - their own custom script. It usually will take in a series of patch files and apply them one by one. In this case a "patch level" is stored somewhere (file/database) and is checked when the deployment is done. He points out a few issues with this method including patch naming issues and branching. Taking a step up the technology tree, he looks at other solutions like Phing+DBDeploy, Liquibase, and Doctrine migrations to try to help you find your project's "silver bullet".
</p>]]></description>
      <pubDate>Tue, 11 Jan 2011 12:42:08 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Gonzalo Ayuso's Blog: Keep our PostgreSQL databases synchronized with PHP. Database version control]]></title>
      <guid>http://www.phpdeveloper.org/news/15567</guid>
      <link>http://www.phpdeveloper.org/news/15567</link>
      <description><![CDATA[<p>
In <a href="http://gonzalo123.wordpress.com/2010/12/13/keep-our-postgresql-databases-syncronized-with-php-database-version-control/">this new post</a> to his blog today <i>Gonzalo Ayuso</i> looks at how he's set up a system that uses PHP to synchronize their PostgreSQL databases' schemas when things changed.
</p>
<blockquote>
We create source code at development server and push the changes to production. It's really easy to keep synchronized all our code. But with databases it's different. [...] It's a recurrent problem working with databases. We create database objects (tables, views, ..) in the development server and when our application is ready to go live we push the changes to production server. If we are smart developers we save all database scripts in a file and when we deploy them to production we execute the script.
</blockquote>
<p>
He mentions tools like <a href="http://dbdeploy.com/">dbdeploy</a> and <a href="http://phing.info/">phing</a> to help make these migrations a bit more automatic. He needed something a little different though - a command-line script that would, based on an ini file, sync two or more databases. He's created the <a href="http://code.google.com/p/pgdbsync/source/browse/pgdbsync">basic script</a> that includes the actions to show the differences between the databases, a summary of the differences and an execution method to bring them into sync. He gives a basic example of how it would handle the sync between his example production and development databases.
</p>]]></description>
      <pubDate>Mon, 13 Dec 2010 09:26:49 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHP North West: PHPNW10: Harrie Verveer: Database version control without pain]]></title>
      <guid>http://www.phpdeveloper.org/news/15542</guid>
      <link>http://www.phpdeveloper.org/news/15542</link>
      <description><![CDATA[<p>
On the PHP North West site they've <A href="http://conference.phpnw.org.uk/phpnw10/2010/12/03/phpnw10-harrie-verveer-database-version-control-without-pain/">posted a new video</a> from this year's conference (back in October) of one of the sessions. In this new video <i>Harrie Verveer</i> presents his talk <i>Database version control without pain</i>.
</p>
<blockquote>
We've all read the textbooks and are using version control systems for our code, but our databases are left out in the cold. Every team has their own workaround, ranging from patch files to SQL snippets in the bugtracker, but none is really robust. There isn't a silver bullet solution, but this talk will show you different approaches and solutions that you can use in different kinds of projects, helping you to handle the changes in your database structure in a more sophisticated way.
</blockquote>
<p>
You can find the <a href="http://www.slideshare.net/harrieverveer/database-version-control-without-pain-the-phpnw10-version">related slides here</a>. There's also other great episodes on <a href="http://conference.phpnw.org.uk/phpnw10/">the PHP North West website</a>.
</p>]]></description>
      <pubDate>Tue, 07 Dec 2010 10:58:45 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Ibuildings techPortal: DPCRadio: Advanced Git]]></title>
      <guid>http://www.phpdeveloper.org/news/15263</guid>
      <link>http://www.phpdeveloper.org/news/15263</link>
      <description><![CDATA[<p>
On the Ibuildings techPortal today they've posted <a href="http://techportal.ibuildings.com/2010/10/12/dpcradio-advanced-git/">the latest episode</a> of their DPCRadio series (recordings of the sessions at this year's Dutch PHP Conference) - <i>David Soria Parra</i>'s talk "Advanced Git".
</p>
<blockquote>
Besides OpenSource projects like the Linux Kernel, OpenJDK or Perl, companies increasingly use distributed version control systems like Git and Mercurial. Their unique features makes new and modern work-flows possible, which are particularly useful in agile development. The talk gives a introduction to the advanced features of Git and the fundamental concepts of modern distributed version control systems.
</blockquote>
<p>
As usual, you can choose to either listen via the <a href="http://techportal.ibuildings.com/2010/10/12/dpcradio-advanced-git/">in-page player</a> or you can <a href="http://techportal.ibuildings.com/wp-content/uploads/audio/dpcradio/2010_007.mp3">download the mp3</a> and listen whenever. His slides are also <a href="http://www.slideshare.net/segv/advanced-git">available online</a> so you can follow along.
</p>]]></description>
      <pubDate>Tue, 12 Oct 2010 08:49:14 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Brian Swan's Blog: Accessing OData for SQL Azure with AppFabric Access Control and PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/15076</guid>
      <link>http://www.phpdeveloper.org/news/15076</link>
      <description><![CDATA[<p>
<i>Brian Swan</i> has <a href="http://blogs.msdn.com/b/brian_swan/archive/2010/09/02/accessing-odata-for-sql-azure-with-appfabric-access-control-and-php.aspx">a new post</a> to his blog today about consuming protected feeds of <a href="http://www.odata.org/">OData</a> coming from <a href="http://msdn.microsoft.com/en-us/windowsazure/sqlazure/default.aspx">SQL Azure</a> in a PHP application.
</p>
<blockquote>
I did write a post a few weeks ago that described how to enable anonymous access to SQL Azure OData feeds (<a href="http://blogs.msdn.com/b/brian_swan/archive/2010/08/03/consuming-sql-azure-data-with-the-odata-sdk-for-php.aspx">Consuming SQL Azure Data with the OData SDK for PHP</a>), but I had a few things to learn about AppFabric access control before I felt comfortable writing about authenticated access to these feeds.
</blockquote>
<p>
He starts from the Azure side, creating a sample OData feed and adding permissions to only allow access to a specific (database) user for the feed. You'll use a set of data to connect to the feed - a username, a secret key, an issuer name and the OData endpoint address. Then, using the <a href="http://odataphp.codeplex.com/">OData SDK</a> he shows how to generate the needed classes with the automatic tool and use them to connect to the endpoint and retrieve data from the feed. He also includes a little snippet for those that might not want to use the SDK - an example using <a href="http://php.net/curl">curl</a> to connect and authorize the session.
</p>]]></description>
      <pubDate>Fri, 03 Sep 2010 13:42:15 -0500</pubDate>
    </item>
  </channel>
</rss>

