<?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 20:19:17 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[PHPMaster.com: Openbiz Cubi: A Robust PHP Application Framework, Part 2]]></title>
      <guid>http://www.phpdeveloper.org/news/19618</guid>
      <link>http://www.phpdeveloper.org/news/19618</link>
      <description><![CDATA[<p>
PHPMaster.com has posted the second part of their look at the Openbiz Cubi framework (<a href="http://phpdeveloper.org/news/19599">part one here</a>), this time focusing on the code - mostly XML - that you'll need to create your own custom module.
</p>
<blockquote>
In the first part of this series we talked about the development challenges we face and how Openbiz Cubi can help by providing a solid, ready-to-use web application framework. In this part we'll see how to build our own module and dive a bit deeper into the core architecture of the framework.
</blockquote>
<p>
They include the SQL you'll need to run to create a new table for the "Customer" module they're going to help you build. With that in place, they walk you through the command to execute to make the module skeleton, the locations of the XML files to work with and the contents of each. Included in the module are things like a data object, a module description file and the form object. He finishes up the post with a look at the overall flow of the Cubi execution so you know where each piece falls.
</p>
Link: http://phpmaster.com/openbiz-cubi-a-robust-php-application-framework-2]]></description>
      <pubDate>Wed, 22 May 2013 10:27:16 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Openbiz Cubi: A Robust PHP Application Framework, Part 1]]></title>
      <guid>http://www.phpdeveloper.org/news/19599</guid>
      <link>http://www.phpdeveloper.org/news/19599</link>
      <description><![CDATA[<p>
On PHPMaster.com today they've posted the first part of a series <a href="http://phpmaster.com/openbiz-cubi-a-robust-php-application-framework-1/">spotlighting Openbiz Cubi</a>, a PHP "framework" with a business focus.
</p>
<blockquote>
Openbiz Cubi is a robust PHP application framework giving developers the ability to create business applications with minimal effort. In this two-part series I'll explain the concepts and steps necessary to create your own business web applications with Cubi. We'll look first at the challenges web developers face and how Openbiz Cubi can help, and then how to install Cubi. In part 2 we'll see how to create our own modules.
</blockquote>
<p>
They start off by describing the tool and some of the features that come with it (including user management and the XML data object structure). Complete installation instructions are included and <a href="http://cdn.phpmaster.com/files/2013/05/cubi-1-1.png">a screenshot</a> is included of the end result. They include a "quick tour" of Cubi's features and some of the modules that come with it like the System, Menu and User modules. In part two of the series, they'll show you how to create a custom module.
</p>
Link: http://phpmaster.com/openbiz-cubi-a-robust-php-application-framework-1]]></description>
      <pubDate>Fri, 17 May 2013 10:36:20 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Lukasz Kujawa: Deploying PHP applications with Phing]]></title>
      <guid>http://www.phpdeveloper.org/news/19447</guid>
      <link>http://www.phpdeveloper.org/news/19447</link>
      <description><![CDATA[<p>
<i>Lukasz Kujawa</i> has a new post to his site introducing you to deployment of your web-based PHP applications <a href="http://systemsarchitect.net/deploying-php-applications-with-phing/">using the Phing build tool</a>.
</p>
<blockquote>
How many steps are required to deploy your software? Some people say it shouldn't be more than one. I'm little bit more relaxed about it so I would say two steps are still fine. If it takes more than two then most likely you need a build script. [...] <a href="http://www.phing.info/">Phing</a> is a PHP project build system or build tool based on &#8203;<a href="http://ant.apache.org/">Apache Ant</a>. You can do anything with it that you could do with a traditional build system like GNU make. It use simple XML build files and extensible PHP "task" classes.
</blockquote>
<p>
He shows how to get it installed via Composer and how to create a simple "build.xml" file with a few targets inside. He shows how to use the "build.properties" configuration file and how to set them from the command line if needed. He also includes details on doing database migrations using the "dbdeploy" tasks.
</p>
Link: http://systemsarchitect.net/deploying-php-applications-with-phing]]></description>
      <pubDate>Thu, 11 Apr 2013 11:44:43 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Systems Architect: Distributed application in PHP with Apache Zookeeper]]></title>
      <guid>http://www.phpdeveloper.org/news/19404</guid>
      <link>http://www.phpdeveloper.org/news/19404</link>
      <description><![CDATA[<p>
On his Systems Architect site <i>Lukasz Kujawa</i> has posted <a href="http://systemsarchitect.net/distributed-application-in-php-with-apache-zookeeper/">an introduction to Apache Zookeeper</a> and how to use it in your PHP applications. Zookeeper is "a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services."
</p>
<blockquote>
<a href="http://zookeeper.apache.org/">Apache ZooKeeper</a> is the coolest technology I recently came across. I found it when I was doing a research about <a href="http://wiki.apache.org/solr/SolrCloud">Solr Cloud features</a>.  [...] Running multiple application as one logical program is nothing new. In fact creating such a software was one of my first jobs many years ago. This type of architecture is confusing and very tricky to work with. Apache ZooKeeper tries to provide a generic set of tools to manage such a software.
</blockquote>
<p>
He shows you how to get the PHP extension for Zookepper (along with needed libraries) compiled and installed in your server setup. He includes a sample class that shows you how to connect to the Zookepper server and add a "watcher" your PHP script will respond to when changes happen. The post also has a "Watcher" class example, showing how to use Zookeeper as part of a distributed application. There's some links at the bottom of the post that can also help you get more details on Zookeeper and the PHP interface.
</p>
Link: http://systemsarchitect.net/distributed-application-in-php-with-apache-zookeeper/]]></description>
      <pubDate>Wed, 03 Apr 2013 10:24:29 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[iBuildings Blog: Verifying out software with OWASP ASVS]]></title>
      <guid>http://www.phpdeveloper.org/news/19399</guid>
      <link>http://www.phpdeveloper.org/news/19399</link>
      <description><![CDATA[<p>
On the iBuildings blog today there's a post from <i>Boy Baukema</i> about the <a href="http://blog.ibuildings.com/2013/03/21/verifying-software-with-owasp-asvs/">use of the OWASP ASVS</a> to help provide a framework of questions to ask about your application to help find any application security "pain points."
</p>
<blockquote>
When a customer commissions Ibuildings for a new application, he usually has plenty of functional demands. [...] And maybe some thoughts have been given to performance metrics, but security? Well… it "needs to be secure". [...] It is said, conveniently enough mostly by software engineers, that building software is perhaps the most complex activity humans have ever undertaken.
</blockquote>
<p>
He notes that "security is not a checkbox, it's a dropdown" and should be continuously considered continuously through out development. The <a href="https://www.owasp.org/index.php/Category:OWASP_Application_Security_Verification_Standard_Project">OWASP ASVS</a> provides a structure that a development group can follow to test the security of their application. It defines 4 types of testing/validation and fourteen other topics to consider.
</p>
<blockquote>
While ASVS is a wonderful addition, it has it's issues: verification and reporting can take a significant amount of time and validation rules are not specific enough to use the tools and techniques.
</blockquote>]]></description>
      <pubDate>Tue, 02 Apr 2013 12:20:19 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Lukas Smith: Good design is no excuse for wasting time]]></title>
      <guid>http://www.phpdeveloper.org/news/19377</guid>
      <link>http://www.phpdeveloper.org/news/19377</link>
      <description><![CDATA[<p>
In his most recent post <i>Lukas Smith</i> suggests that <a href="http://pooteeweet.org/blog/0/2205#m2205">good design isn't an excuse for wasting time</a>. He's basically saying that Symfony2, because of how it's designed and implemented, isn't a RAD (rapid application development) framework and that it's about time for some layers to be added to help get it there.
</p>
<blockquote>
Symfony 1.x I would put into a category of frameworks focused on RAD, aka rapid application development. [...] So for those people who were happy focusing on the 80% use case Symfony2 is a step back. Suddenly the same features take longer to implement, take longer to modify later on and on top of that the learning curve is steeper.
</blockquote>
<p>
He suggests that work be put into "RAD layers" that can sit on top of Symfony2 and provide some of the more familiar features people are used to from things like CakePHP, Yii and CodeIgniter. There's been <a href="https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Resources/doc/5-automatic-route-generation_single-restful-controller.md">a few</a> <a href="http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/index.html">tries</a> to <a href="http://sonata-project.org/bundles/admin/master/doc/index.html">accomplish</a> this with only one getting the closest in his opinion - the <a href="http://rad.knplabs.com/">KnpBundle</a>.
</p>]]></description>
      <pubDate>Thu, 28 Mar 2013 11:51:51 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Inviqa techPortal: New Relic for PHP: Web Application Performance Monitoring]]></title>
      <guid>http://www.phpdeveloper.org/news/19318</guid>
      <link>http://www.phpdeveloper.org/news/19318</link>
      <description><![CDATA[<p>
On the Inviqa techPortal today there's a new post talking about the New Relic monitoring service and what it has to <a href="http://techportal.inviqa.com/2013/03/14/new-relic-for-php-web-application-performance-monitoring/">offer PHP developers and their applications</a> to help them manage things like performance and resources.
</p>
<blockquote>
The performance of a web application plays a critical role in how an application is perceived by its users. It is important to measure it, identify the causes if it changes and react swiftly to any unexpected changes. This article describes an industry leading tool, New Relic, and how it can be used to monitor and improve your site performance. [...] New Relic is a real-time application monitoring service, providing various metrics about the performance of your production site, covering everything from application database queries through to the time it takes for the end-user to view a page. 
</blockquote>
<p>
They walk you through a "getting started" with the tool and how to get it running on your server - for PHP this means installing an "agent" extension and a local daemon for it to feed information back to. They then get into some of the data New Relic provides including application performance details, browser information, throughput and an <a href="https://en.wikipedia.org/wiki/Apdex">Apdex</a> score.
</p>]]></description>
      <pubDate>Fri, 15 Mar 2013 10:10:56 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Lorna Mitchell: Installing XHGui]]></title>
      <guid>http://www.phpdeveloper.org/news/19286</guid>
      <link>http://www.phpdeveloper.org/news/19286</link>
      <description><![CDATA[<p>
<i>Lorna Mitchell</i> has a new post today showing you how to <a href="http://www.lornajane.net/posts/2013/installing-xhgui">install XHGui</a> to help with profiling your application for performance and processing issues.
</p>
<blockquote>
If you're not familiar with XHGui it's a fabulously easy and friendly way to profile your application; to understand which method calls in a page take the time and how many times they are made, so you can improve the performance of your application. All these instructions are for my 32-bit Ubuntu 12.10 system, hopefully they will work for you or you'll be able to adapt them as appropriate.
</blockquote>
<p>
She lists the dependencies you'll need to have installed before you can get XHGui working correctly including a MongoDB instance and the <a href="http://pecl.php.net/package/xhprof">PECL xhprof</a> extension. With those all set to go, you can go grab the latest XHGui <a href="https://github.com/preinheimer/xhgui">from github</a> and drop it into place. 
</p>]]></description>
      <pubDate>Thu, 07 Mar 2013 12:15:01 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Gonzalo Ayuso: Scaling Silex applications (part II). Using RouteCollection]]></title>
      <guid>http://www.phpdeveloper.org/news/19277</guid>
      <link>http://www.phpdeveloper.org/news/19277</link>
      <description><![CDATA[<p>
<i>Gonzalo Ayuso</i> has <a href="http://gonzalo123.com/2013/03/04/scaling-silex-applications-part-ii-using-routecollection/">posted a second part</a> of his look at scaling Silex (here's <a href="http://gonzalo123.com/2013/02/11/scaling-silex-applications/">part one</a>). In this new article he shows how to use the RouteCollection functionality instead of defining the routes in the DI configuration.
</p>
<blockquote>
In the post <a href="http://gonzalo123.com/2013/02/11/scaling-silex-applications/">Scaling Silex applications</a> I wanted to organize a one Silex application. In one <a href="http://gonzalo123.com/2013/02/11/scaling-silex-applications/#comment-3834">comment</a> Igor Wiedler recommended us to use RouteCollections instead of define the routes with a Symfony's Dependency Injection Container. Because of that I started to hack a little bit about it and here I show you my outcomes:
</blockquote>
<p>
He includes example code for creating the application, setting up the main "routes.yml" file with some defaults and two other files for routes in other parts of the site - "api" and "blog". Then he makes the controllers related to these three sections with basic actions catching each of the routes. The source for the entire thing is <a href="https://github.com/gonzalo123/silexRouteCollection">over on github</a>.
</p>]]></description>
      <pubDate>Wed, 06 Mar 2013 09:21:31 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Preventing Code Rot 101: Unit Testing]]></title>
      <guid>http://www.phpdeveloper.org/news/19253</guid>
      <link>http://www.phpdeveloper.org/news/19253</link>
      <description><![CDATA[<p>
On PHPMaster.com today they've published a new article from <i>Remi Woler</i> about <a href="http://phpmaster.com/preventing-code-rot-101-unit-testing/">preventing "code rot"</a> in your applications through the use of unit testing. He advocates that tests, when applied correctly, can help make refactoring easier and safer, allowing you to change your code and know things stlll work.
</p>
<blockquote>
Unless you're working on a fresh project right now, the codebase you work with most likely has such code you take for granted. And the more challenging your current assignment (or fresh project) is, the more likely it will become a legacy part as well on short notice. Since it's infeasible to fully comprehend all problems that your codebases solve, as well as all their solutions, something else needs to be done to prevent code rot. One way or the other: the code needs to be refactorable to live happily ever after.
</blockquote>
<p>
The breaks down the steps that a unit test should follow on its most base level - assemble the environment to test inside, act on the code and assert that the output was as expected. He walks you through each of these steps, detailing what's involved and including some sample code to illustrate. He also includes a few tips on the successful application of tests like:
</p>
<ul>
<li>Don't forget to write integration/acceptance tests as well.
<li>Name your unit tests verbosely.
<li>Write unit tests for bug fixes.
<li>Never change the code under test.
</ul>]]></description>
      <pubDate>Thu, 28 Feb 2013 13:41:32 -0600</pubDate>
    </item>
  </channel>
</rss>
