<?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, 20 Jun 2013 03:19:16 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Gilles Mergoil: Laravel 4 on Google AppEngine for PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/19740</guid>
      <link>http://www.phpdeveloper.org/news/19740</link>
      <description><![CDATA[<p>
Since Google recently announced that they'd be supporting PHP on their App Engine service, developers have been trying out various setups to see how well they'd work. In <a href="http://blog.neoxia.com/laravel-4-on-google-appengine-for-php/">this recent post</a> <i>Gilles Mergoil</i> shares some of his experience with getting a Laravel 4-based application up and running in App Engine.
</p>
<blockquote>
Now that Google App Engine opens to the PHP world and that the 4th version of the Laravel framework is officialy launched, we wanted to test these two promising technologies together at Neoxia. This blog post is the result of our tests whose goal was to have a standard Laravel 4 application on the Google App Engine PHP runtime up and running Given that an application without a database is not very useful, we also tested the Google Cloud SQL service which is the Google flavour of the MySQL database in the cloud.
</blockquote>
<p>
He works through some of the steps for his first attempt at getting it set up, but notes that the seemingly working setup wasn't actually cooperating like it should. Thanks to some log analysis (and debugging) he found a few issues - missing functions, the lack of the mcrypt extension and session/cache/logging problems. He shows how to correct each of these and then moves on to connecting the app to a Google Cloud SQL database.
</p>
Link: http://blog.neoxia.com/laravel-4-on-google-appengine-for-php]]></description>
      <pubDate>Wed, 19 Jun 2013 12:35:40 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Rob Allen: Caching your ZF2 merged configuration]]></title>
      <guid>http://www.phpdeveloper.org/news/19737</guid>
      <link>http://www.phpdeveloper.org/news/19737</link>
      <description><![CDATA[<p>
<i>Rob Allen</i> has a a new post to his site today showing how you can <a href="http://akrabat.com/zend-framework-2/caching-your-zf2-merged-configuration/">cache the merged settings</a> from all of your configuration files combined in a Zend Framework v2 application.
</p>
<blockquote>
Zend Framework 2's ModuleManager has the ability to cache the merged configuration information for your application. This is very useful as it allows you to separate out your configuration within the config/autoload directory into logical files without worrying about the performance implications of lots of files.
</blockquote>
<p>
There's some ZF2 configuration options that tell it to cache this data once it's loaded the first time, but he notes one issue with this - caching in development. It can be annoying when you make a change and nothing happens because it's cached. To prevent this he shows you how to only cache if the application is marked as in production (based on the "APPLICATION_ENV"). Separate main configuration files are made for each environment, one that caches and one (for dev) that doesn't. 
</p>
Link: http://akrabat.com/zend-framework-2/caching-your-zf2-merged-configuration]]></description>
      <pubDate>Wed, 19 Jun 2013 09:43:28 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Data Structures for PHP Devs: Stacks and Queues]]></title>
      <guid>http://www.phpdeveloper.org/news/19734</guid>
      <link>http://www.phpdeveloper.org/news/19734</link>
      <description><![CDATA[<p>
On PHPMaster.com today there's a new tutorial - the first part in a series - looking at data structures. In <a href="http://phpmaster.com/php-data-structures-1/">this first post</a> <i>Ignatius Teo</i> looks at the concepts of "stacks" and "queues".
</p>
<blockquote>
Most of us are familiar with "stacks" and "queues" in normal everyday usage. But, what do supermarket queues and vending machines have to do with data structures? Let's find out. In this article, I will introduce you to two basic abstract data types - the Stack and the Queue - which have their conceptual origins in everyday usage.
</blockquote>
<p>
He introduces some of the common concepts behind these two ideas and includes some sample code showing how to implement them. He also mentions some of the <a href="http://php.net/spl">SPL</a> functionality that's bult into PHP to handle some of this. The <a href="http://php.net/splstack">SplStack</a> and <a href="http://php.net/SplQueue">SplQueue</a> objects take some of the hassle out of it for you.
</p>
Link: http://phpmaster.com/php-data-structures-1]]></description>
      <pubDate>Tue, 18 Jun 2013 11:42:37 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Sameer Borate: Simple user authentication in Laravel 4]]></title>
      <guid>http://www.phpdeveloper.org/news/19729</guid>
      <link>http://www.phpdeveloper.org/news/19729</link>
      <description><![CDATA[<p>
<i>Sameer Borate</i> has a new post today showing how you can do <a href="http://www.codediesel.com/frameworks/simple-user-authentication-in-laravel-4/">simple user authentication</a> in a <a href="http://laravel.com">Laravel 4</a>-based application using the built-in Auth functionality.
</p>
<blockquote>
With the recent release of Laravel 4, PHP developers have at their disposal one of the finest frameworks for application development. As with all new frameworks, it is always good to write some quick code to get a feel for the underlying architecture. The following post shows a simple authentication application using Laravel.
</blockquote>
<p>
He walks you through the creation of the simple "users" table, the configuration the Auth class will need to connect and authenticate and the form for the login. He also shows the steps for the actual authentication process as well as the code for the routes to make it all work. Additionally, he shows how to restrict pages to only those with the "admin" level access via an auth filter. You can download the <a href="http://www.codediesel.com/downloads/laravel-login-demo">example code here</a>.
</p>
Link: http://www.codediesel.com/frameworks/simple-user-authentication-in-laravel-4]]></description>
      <pubDate>Mon, 17 Jun 2013 14:22:01 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[MaltBlue.com: Using ZFTool for Basic Project Management]]></title>
      <guid>http://www.phpdeveloper.org/news/19726</guid>
      <link>http://www.phpdeveloper.org/news/19726</link>
      <description><![CDATA[<p>
<i>Matthew Setter</i> has <a href="http://www.maltblue.com/tutorial/zftool-for-basic-project-management">posted a new tutorial</a> about using the ZFTool functionality of Zend Framework v2 for managing your project's settings and configuration.
</p>
<blockquote>
Welcome to another tutorial. Today, I will be giving you a walk through of zftool, which provides basic tooling support in Zend Framework 2. If you're new to Zend Framework, or have been <a href="http://www.maltblue.com/articles-2/zend-framework-2-core-concepts-understanding-dependency-injection">reading the introductory series here</a>, it can come in quite handy. But unlike other frameworks, such as Yii (<a href="http://www.yiiframework.com/doc/guide/1.1/en/quickstart.first-app">through yiic</a>) and Symfony (<a href="http://symfony.com/doc/current/components/console/introduction.html">via the Command Line tool</a>), the tooling support in Zend Framework 2 is rather light on. These respective tools provide rather robust support for automatically generating models from database connections, checking logs and a host of other much required functionality.
</blockquote>
<p>
He shows you how to do a few things with the ZFTool - create a new project, make some modules inside it, build an autoloader classmap and check the installation with some basic diagnostics. Command examples and configuration samples are included in the post to help you along. 
</p>
Link: http://www.maltblue.com/tutorial/zftool-for-basic-project-management]]></description>
      <pubDate>Mon, 17 Jun 2013 11:18:42 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Manage Complexity with the Facade Pattern]]></title>
      <guid>http://www.phpdeveloper.org/news/19702</guid>
      <link>http://www.phpdeveloper.org/news/19702</link>
      <description><![CDATA[<p>
On PHPMaster.com today a new tutorial has been posted about <a href="http://phpmaster.com/manage-complexity-with-the-facade-pattern/">using the Facade design pattern</a> to help reduce the complexity of your application. It can help interface between other pieces of code an make using them simpler (a "facade" on top of them).
</p>
<blockquote>
Design patterns are built to standardize solutions for common problems faced in software development.  [...] Facade is a design pattern used in almost every web application, but often without knowing. The term "design pattern" creates a mental image of something complex and difficult to understand. Even though this can be true sometimes, the Facade pattern is simple to implementation. Let's see what Facade is and what it does to help us write good code.
</blockquote>
<p>
A simple example is given to help make the concept of a facade clearer - the process behind borrowing a book. As borrowing and returning a book could involve multiple library types, they use a facade to provide a common interface to all of them. With the concrete example in place, they then move on to the official definition of the pattern and two more "real world" examples: authentication against multiple social networks and working with WordPress meta functions.
</p>
Link: http://phpmaster.com/manage-complexity-with-the-facade-pattern]]></description>
      <pubDate>Tue, 11 Jun 2013 11:54:25 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Gonzalo Ayuso: Working with jQuery and Silex as RestFull Resource provider]]></title>
      <guid>http://www.phpdeveloper.org/news/19696</guid>
      <link>http://www.phpdeveloper.org/news/19696</link>
      <description><![CDATA[<p>
In a <a href="http://phpdeveloper.org/news/19667">previous post</a> <I>Gonzalo Ayuso</i> showed how to use Silex as a data provider to an AngularJS application REST-fully. In <a href="http://gonzalo123.com/2013/06/10/working-with-jquery-and-silex-as-restfull-resource-provider">this new post</a> he does the same thing but with jQuery this time.
</p>
<blockquote>
The previous <a href="http://gonzalo123.com/2013/06/03/working-with-angularjs-and-silex-as-resource-provider/">post</a> was about how to use AngularJS resources with Silex. AngularJS is great and when I need to switch back to jQuery it looks like I go back 10 years in web development, but business is business and I need to live with jQuery too. Because of that this post is about how to use the Silex RestFull resources from the previous post, now with jQuery. 
</blockquote>
<p>
He includes the sample code showing the jQuery version of the application based on a "Resource" object. He also includes some samples of its use for the usual CRUD operations. You can get the full code from <a href="https://github.com/gonzalo123/jQueryRestResource">github</a>.
</p>
Link: http://gonzalo123.com/2013/06/10/working-with-jquery-and-silex-as-restfull-resource-provider]]></description>
      <pubDate>Mon, 10 Jun 2013 12:40:01 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Proc_Open: Communicate with the Outside World]]></title>
      <guid>http://www.phpdeveloper.org/news/19693</guid>
      <link>http://www.phpdeveloper.org/news/19693</link>
      <description><![CDATA[<p>
On PHPMaster.com today there's a new tutorial from <i>Timothy Boronczyk</i> about <a href="http://phpmaster.com/proc-open-communicate-with-the-outside-world">using the proc_open function</a> to kick off processes outside of PHP. It can be used to start up and manage (in a limited fashion) external process calls.
</p>
<blockquote>
There are many ways we can interact with other applications from PHP and share data; there's web services, message queuing systems, sockets, temporary files, exec(), etc. Well, today I'd like to show you one approach in particular, proc_open(). The function spawns a new command but with open file pointers which can be used to send and receive data to achieve interprocess communication (IPC).
</blockquote>
<p>
He starts off explaining one of the fundamental concepts behind working with processes - pipes, both anonymous and named. He then moves on to the use of <a href="http://php.net/proc_open">proc_open</a> and the three attributes it takes - command, pipes and references for output. He includes a more practical example showing it in use - a script that converts text with wiki markup into HTML output (via <a href="http://nyctergatis.com/creole/">this tool</a>).
</p>
Link: http://phpmaster.com/proc-open-communicate-with-the-outside-world]]></description>
      <pubDate>Mon, 10 Jun 2013 09:43:01 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[NetTuts.com: Parallel Testing for PHPUnit with ParaTest]]></title>
      <guid>http://www.phpdeveloper.org/news/19687</guid>
      <link>http://www.phpdeveloper.org/news/19687</link>
      <description><![CDATA[<p>
On NetTuts.com today there's a new tutorial showing you how to <a href="http://net.tutsplus.com/tutorials/php/parallel-testing-for-phpunit-with-paratest/">use ParaTest</a> for PHPUnit to execute your tests in parallel instead of the usual inline, in-order method.
</p>
<blockquote>
PHPUnit has hinted at parallelism since 2007, but, in the meantime, our tests continue to run slowly. Time is money, right? ParaTest is a tool that sits on top of PHPUnit and allows you to run tests in parallel without the use of extensions. This is an ideal candidate for functional (i.e Selenium) tests and other long-running processes.
</blockquote>
<p>
<a href="https://github.com/brianium/paratest">ParaTest</a> operates as a separate binary that can easily be installed via Composer. They walk you through the install and show you what kind of options it lets you provide (like number of processes and the path to the PHPUnit executable). They show you how to write some parallel tests, five of them, each that sleeps for a certain amount of time. They also look at another tool that could help run your tests in parallel,  <a href="https://github.com/jlipps/paraunit">Paraunit</a>. They finish off the post with a look at some functional testing examples using Selenium, handling race conditions and some of the future plans for ParaTest's future. 
</p>
Link: http://net.tutsplus.com/tutorials/php/parallel-testing-for-phpunit-with-paratest]]></description>
      <pubDate>Fri, 07 Jun 2013 11:44:48 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Sameer Borate: Debugging Laravel with MonoLog and FirePHP]]></title>
      <guid>http://www.phpdeveloper.org/news/19685</guid>
      <link>http://www.phpdeveloper.org/news/19685</link>
      <description><![CDATA[<p>
<i>Sameer Borate</i> has a new post to his site showing you how to debug a Laravel application <a href="http://www.codediesel.com/laravel/debuggin-laravel-with-monolog-and-firephp/">with Monolog and FirePHP</a>.
</p>
<blockquote>
By default, Laravel is configured to create daily log files for your application, and are stored in app/storage/logs. All Laravel logging features are handled by the wonderful <a href="https://github.com/Seldaek/monolog">MonoLog</a> library. Monolog includes various log handlers you can use - FirePHP, ChromePHP, CouchDB, Stream and many more. One of my favorites is FirePHP while debugging PHP apps.
</blockquote>
<p>
Getting Monolog to write out to FirePHP is pretty easy and he includes the sample code to make it happen - basically pushing a "FirePHPHandler" into the Monolog instance and using it from there.
</p>
Link: http://www.codediesel.com/laravel/debuggin-laravel-with-monolog-and-firephp]]></description>
      <pubDate>Fri, 07 Jun 2013 09:08:37 -0500</pubDate>
    </item>
  </channel>
</rss>
