<?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>Sun, 12 Feb 2012 21:29:21 -0600</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Joshua Thijssen's Blog: Setting up a development environment]]></title>
      <guid>http://www.phpdeveloper.org/news/17499</guid>
      <link>http://www.phpdeveloper.org/news/17499</link>
      <description><![CDATA[<p>
In a new post to his blog <i>Joshua Thijssen</i> <a href="http://www.adayinthelifeof.nl/2012/02/04/setting-up-a-development-environment/">gives a guide</a> to how he usually sets up his development environments when working in PHP. It includes working with virtual machines, configuring DNS and setting up his tools to work with it all.
</p>
<blockquote>
Doing development on multiple projects can be a burden from time to time. One project would be running on PHP 5.3, while another still needs 5.1. Sometimes you need a MySQL server, while on other occasions, you need a NoSQL solution like couchDB or MongoDB together with all kind of gearman functionality. This article shows you how I've setup such a development platform that allows you to quickly create new projects, and still maintain flexibility when you need it.
</blockquote>
<p>
He uses <a href="https://www.virtualbox.org/">VirtualBox</a> with either a Debian or CentOS installation as a base platform. He uses Vagrant to set up and configure the machines to make setup almost automatic. He still has to go in and configure a few things like the VirtualHost and DNS settings for the site/application he's working on. 
 Next up is setting up the tools he uses, specifically <a href="http://xdebug.org">XDebug</a> and setting up his editor of choice (PHPStorm) for remote debugging.
</p>]]></description>
      <pubDate>Mon, 06 Feb 2012 09:27:41 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[AndroidHive: Android Login and Registration with PHP, MySQL and SQLite]]></title>
      <guid>http://www.phpdeveloper.org/news/17487</guid>
      <link>http://www.phpdeveloper.org/news/17487</link>
      <description><![CDATA[<p>
On the AndroidHive site there's a <a href="http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/">recent tutorial</a> (plus screencast) about combining PHP, MySQL and SQLite to act as the backend authorization for your Android application.
</p>
<blockquote>
In my previous article <a href="http://www.androidhive.info/2011/10/android-login-and-registration-screen-design/">Android Login and Registration Screen Design</a> i explained designing the login and registration interfaces, but it has no functionality. In this tutorial i am explaining how to build complete login and registration system in android using PHP, MySQL and SQLite. Also this tutorial covers how to build simple API using PHP and MySQL.
</blockquote>
<p>
<a href="http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/">The tutorial</a> walks you through each step of the process:
</p>
<ul>
<li>Creating MySQL Database and Tables
<li>Building PHP API Classes
<li>Starting Android Project
<li>Making the JSON Parser, SQLite Database Handler and User Functions Classes
<li>Designing the Screens
<li>Switching between Activities
<li>Finally Updating AndroidManifest.xml
</ul>
<p>
If you want to get started quickly, you can just <a href="http://www.box.com/s/kscvgpb1iadv5ppxgrie">download the final result</a> and go.
</p>]]></description>
      <pubDate>Thu, 02 Feb 2012 10:41:21 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Ulf Wendel's Blog: PHP mysqli quickstart is online!]]></title>
      <guid>http://www.phpdeveloper.org/news/17392</guid>
      <link>http://www.phpdeveloper.org/news/17392</link>
      <description><![CDATA[<i>Ulf Wendel</i> has a new post to his blog pointing out <a href="http://blog.ulf-wendel.de/2012/php-mysqli-quickstart-is-online/">the new mysqli quickstart</a> that's been <a href="http://docs.php.net/manual/en/mysqli.quickstart.php">added to the PHP manual</a>.
</p>
<blockquote>
New in the PHP manual: a <a href="http://docs.php.net/manual/en/mysqli.quickstart.php">mysqli quickstart</a>. You are new to PHP but you know how to code, you know SQL, you know relational databases and MySQL? Then, I hope, this is for you. All you need is a quick overview on the concepts? The rest is in the reference section! Here you go.
</blockquote>
<p>It includes sections on:</p>
<ul>
<li><a href="http://docs.php.net/manual/en/mysqli.quickstart.connections.php">making connections</a>
<li><a href="http://docs.php.net/manual/en/mysqli.quickstart.statements.php">executing statements</a>
<li><a href="http://docs.php.net/manual/en/mysqli.quickstart.stored-procedures.php">stored procedures</a>
<li><a href="http://docs.php.net/manual/en/mysqli.quickstart.multiple-statement.php">multiple statements</a>
</ul>]]></description>
      <pubDate>Fri, 13 Jan 2012 12:13:25 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Writing Custom Session Handlers]]></title>
      <guid>http://www.phpdeveloper.org/news/17319</guid>
      <link>http://www.phpdeveloper.org/news/17319</link>
      <description><![CDATA[<p>
On PHPMaster.com today there's a new post showing you how to <a href="http://phpmaster.com/writing-custom-session-handlers/">write custom session handlers</a> - in their case, a database-based option that can span across multiple servers/services.
</p>
<blockquote>
Sessions are a tool which helps the web programmer overcome the stateless nature of the internet. You can use them to build shopping carts, monitor visits to a website, and even track how a user navigates through your application. PHP's default session handling behavior can provide all you need in most cases, but there may be times when you want to expand the functionality and store session data differently. This article will show you how the default functionality works and then goes on to show you how override it to provide a custom solution.
</blockquote>
<p>
They introduce how sessions are stored normally (based on the save path) and what the serialized contents of it would look like. They show you how to take this, normally stored on the local file system, and change it to be written to a "session" table in a MySQL database (via <a href="http://php.net/pdo">PDO</a>). It includes reading, writing, updating and some garbage collection to clean out old values from the table.
</p>]]></description>
      <pubDate>Thu, 29 Dec 2011 09:41:25 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Andrew Johnstone's Blog: Vagrant, Automating PHP/MySQL Installation with bash/slack]]></title>
      <guid>http://www.phpdeveloper.org/news/17241</guid>
      <link>http://www.phpdeveloper.org/news/17241</link>
      <description><![CDATA[<p>
<i>Andrew Johnstone</i> has a new post to his blog with a look at <a href="http://ajohnstone.com/achives/vagrant-automating-php-installation-with-bashslack-for-continuous-deployment/">using Vagrant for continuous deployment</a> of a PHP-based application.
</p>
<blockquote>
<a href="http://vagrantup.com/">Vagrant</a> is simply a wrapper around Virtualbox headless that allows for provisioning virtual machines with support for <a href="http://projects.puppetlabs.com/projects/puppet">puppet</a>, <a href="http://wiki.opscode.com/display/chef/Chef+Solo">chef-solo</a>, <a href="http://wiki.opscode.com/display/chef/Home">chef</a>, and <a href="http://tldp.org/LDP/abs/html/">bash</a>. This allows you to automate the deployment and sandboxing of development sites. Additional base box images can be found at <a href="http://www.vagrantbox.es/">vagrantbox.es</a>.
</blockquote>
<p>
He walks you through the full process of setting up a first deployment - getting Vagrant installed, updating the config for a squeeze64.box image, configuring a virtualhost on the Apache web server and setting up a "preinstall" script to configure things like MySQL and install a long list of packages (via apt-get). 
</p>]]></description>
      <pubDate>Mon, 12 Dec 2011 08:58:08 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[DevArticles.com: Singletons in PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/17218</guid>
      <link>http://www.phpdeveloper.org/news/17218</link>
      <description><![CDATA[<p>
On DevArticles.com today there's <a href="http://www.devarticles.com/c/a/PHP/Singletons-in-PHP/">a new tutorial</a> posted talking about one of the more popular design patterns, the Singleton, and how it can be implemented in PHP.
</p>
<blockquote>
Though in the past they enjoyed both popularity and a certain amount of prestige, without a doubt Singletons have progressively become one of the most evil and despicable villains in object-oriented design. Singletons earned their bad reputation for a reason: bringing them to life requires the programmer to deal at least with a static method. This is simply an elegant masquerade for creating a global access point (which in most cases is mutable as well) throughout an entire application. And we all know that global, mutable access is unquestionably a bad thing that must be avoided at all costs.
</blockquote>
<p>
In this first part (of two) of the series they introduce the Singleton pattern and show how, via an example of using a database adapter interface to work with a MySQL database, in a tightly coupled example. 
 In the second part of the series, they'll show how to break these apart using dependency injection.
</p>]]></description>
      <pubDate>Tue, 06 Dec 2011 10:17:33 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Community News: Zagreb PHP User Group December 2011 Meeting - 13th @ 6pm]]></title>
      <guid>http://www.phpdeveloper.org/news/17186</guid>
      <link>http://www.phpdeveloper.org/news/17186</link>
      <description><![CDATA[<p>
<i>Miro</i> has submitted some information about the latest meeting of the <a href="http://zgphp.eventbrite.com/">Zagreb PHP User Group</a> happening December 13th at 6pm in the <a href="http://www.mi2.hr/">Multimedia Institute</a>:
</p>
<blockquote>
<p>
Although Zagreb PHP Meetup started only 3 months ago with monthly meetups (up to 30 developers coming), our next meeting will be first meetup with organized talks. December meetup will have 5 talks with themes like 'How to write readable code?', 'Flex & PHP development' , 'Introduction to test driven development' && 'MySQL - explain explained'.  
</p>
<p>
We would like to invite all interested PHP and non-PHP developers that would like to listen to some of best Croatian PHP devs (and understand Croatian language) to come on December 13th from 6PM to Mama, Preradoviceva 18 in Zagreb. Unfortunately we are limited with number of available seats so please signup at http://zgphp.eventbrite.com/.
</p>
</blockquote>
<p>
Due to space limitations, there's only 12 seats available so hurry and <a href="http://zgphp.eventbrite.com/">reserve your spot</a> if you'd like to attend (it's free)!
</p>
<p>
Have a user group meeting you'd like announced? <a href="mailto:info@phpdeveloper.org">Let us know!</a>
</p>]]></description>
      <pubDate>Wed, 30 Nov 2011 08:29:30 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[NetTuts.com: How to Generate a Complete Excel Spreadsheet From MySQL]]></title>
      <guid>http://www.phpdeveloper.org/news/17166</guid>
      <link>http://www.phpdeveloper.org/news/17166</link>
      <description><![CDATA[<p>
On NetTuts there's a new tutorial showing how to take data from a MySQL database and translate it into a usable Excel file <a href="http://net.tutsplus.com/tutorials/php/how-to-generate-a-complete-excel-spreadsheet-from-mysql/">with the help of some simple PHP</a>.
</p>
<blockquote>
A CSV (Comma Separated Value) file is usually sufficient for exporting MySQL data as an Excel Spreadsheet. These CSV files are data only though. A real Excel spreadsheet has formatting, formulas and perhaps even graphics - the difference between a simple method of data transfer and a professional report. This tutorial shows how to use open source PHP components to create "real" Excel spreadsheets from MySQL SELECT statements.
</blockquote>
<p>
With the help of the <a href="http://www.phpexcel.net/">PHPExcel tool</a>, making Excel-formatted files is a simple process. They show how to label columns, pull data out with a "quick and dirty" SQL statement, formatting the results to something a bit more clean and iterate through the pages of data to push them into the spreadsheet (including formulas). You can <a href="http://nettuts.s3.amazonaws.com/1090_mysqlexcel/source.zip">download the full source</a> to get everything in one shot.
</p>]]></description>
      <pubDate>Wed, 23 Nov 2011 17:52:54 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Johannes Schl&uuml;ter's Blog: High Performance PHP Session Storage on Scale]]></title>
      <guid>http://www.phpdeveloper.org/news/17147</guid>
      <link>http://www.phpdeveloper.org/news/17147</link>
      <description><![CDATA[<p>
In <a href="http://schlueters.de/blog/archives/164-High-Performance-PHP-Session-Storage-on-Scale.html">this new post</a> to his blog, <i>Johannes Schl&uuml;ter</i> looks at a high-performance solution to the usual storing PHP session information via a memcache frontend with a MySQL Cluster backend.
</p>
<blockquote>
Unfortunately even such a system [using MySQL and InnoDB tables] has limits and unfortunately replication is no good solution here to scale further as we will always need a master for writing the updated session data. By using replication we can take some load from it and we can configure a slave which can be promoted to master to keep session alive if the primary master machine fails but at some point in time we need another solution ... but, happy news, again: One doesn't have to look far as MySQL cluster will be happy to help. MySQL Cluster "is a high-availability, high-redundancy version of MySQL adapted for the distributed computing environment," as the <a href="http://dev.mysql.com/doc/refman/5.5/en/mysql-cluster.html">MySQL documentation states</a>. 
</blockquote>
<p>
He describes the setup (after pointing to <a href="http://www.clusterdb.com/mysql-cluster/scalabale-persistent-ha-nosql-memcache-storage-using-mysql-cluster/">this post</a> about installing MySQL Cluster for memcache) and includes some sample code/SQL/ini settings you'll need to use to get PHP's <a href="http://us.php.net/manual/en/class.memcached.php">memcached</a> functionality to cooperate with it.
</p>
]]></description>
      <pubDate>Fri, 18 Nov 2011 10:13:25 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[DevShed: Building an ORM in PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/17146</guid>
      <link>http://www.phpdeveloper.org/news/17146</link>
      <description><![CDATA[<p>
On DevShed today there's a new tutorial showing you how to <a href="http://www.devshed.com/c/a/MySQL/Building-an-ORM-in-PHP/">build a basic ORM layer</a> on top of a MySQL database. It includes all the code you'll need (cut&paste-able, not as a download).
</p>
<blockquote>
Obviously, with so many ORMs at one's disposal for free, it seems pretty pointless to develop a custom one; are we trying to reinvent the wheel? No, of course not. But if you need to create a simple application that performs a few CRUD operations on some related domain objects and don't want to climb the learning curve of a third-party library, then implementing a custom ORM might make sense. There's alos the educational aspect of the process (yes, learning one or two things never hurts).
</blockquote>
<p>
They start you off with the creation of the "data persistence layer" (an interface first) to connect to the database, building a MySQL-specific one on top of it. Next up is the data mapper layer making things like "fetch by ID" and the insert/update/delete possible. Their simple example doesn't include anything about ORM relationships, though - just fetching simple rows.
</p>]]></description>
      <pubDate>Fri, 18 Nov 2011 09:45:15 -0600</pubDate>
    </item>
  </channel>
</rss>

