<?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>Sat, 18 May 2013 18:40:24 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Lorna Mitchell: What Goes in Source Control?]]></title>
      <guid>http://www.phpdeveloper.org/news/19525</guid>
      <link>http://www.phpdeveloper.org/news/19525</link>
      <description><![CDATA[<p>
As developers, one of the best things you can do for a project is to use version control (or "source control") for your code. <i>Lorna Mitchell</i> suggest using it <a href="http://www.lornajane.net/posts/2013/what-goes-in-source-control">on a wider scale</a>, though. She sees it as a great place for all sorts of other things around a project too.
</p>
<blockquote>
Short answer: everything! However we need some good directory structures and source control configuration to make that a really practical answer, so this article is a quick outline of my usual advice for a good source control structure for a standard web project. The examples are for a PHP project but I'm sure you could apply this to your own language of choice, also.
</blockquote>
<p>
These "other things" she suggests that should end up in source control including things like:
</p>
<ul>
<li>The actual "web root" of your application
<li>Library code
<li>Build scripts
<li>Configuration files
<li>Database patches
<li>Tests (unit, functional, integration, etc)
</lu>
Link: http://www.lornajane.net/posts/2013/what-goes-in-source-control]]></description>
      <pubDate>Tue, 30 Apr 2013 10:31:26 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Jani Hartikainen: Parsing and evaluating PHP in Haskell: Part 1]]></title>
      <guid>http://www.phpdeveloper.org/news/19052</guid>
      <link>http://www.phpdeveloper.org/news/19052</link>
      <description><![CDATA[<p>
<i>Jani Hartikainen</i> has posted the <a href="http://codeutopia.net/blog/2013/01/16/parsing-and-evaluating-php-in-haskell-part-1/">first part of a series</a> of articles sharing his experiences with an experiment he's conducting - trying to <a href="https://github.com/jhartikainen/hs-language-php">parse and evaluate PHP in Haskell</a>.
</p>
<blockquote>
The other day I uploaded a new experimental project on GitHub - A <a href="https://github.com/jhartikainen/hs-language-php">Haskell PHP parser / evaluator</a>. It doesn't understand 100% of all PHP syntax, but it was an interesting experiment nevertheless. Here's some insights and other thoughts from working on the code.
</blockquote>
<p>
He gets the "why?" question out of the way early, noting that it was mainly a desire to play with Haskell and figured parsing something he already knew well was a good first project. He also mentions the "Parsec" library that seems well suited for the parsing part of the process. There were some issues that he came across, however including dealing with PHP's weak typing and handling all of the possible incarnations of PHP script structure. He includes an example AST showing his different data structures (PHPValue, PHPExpr and PHPStmt). The next part of the series will be more about the evaluation of this structure.
</p>]]></description>
      <pubDate>Thu, 17 Jan 2013 11:13:23 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHP.net: PHP 5.4.10 and PHP 5.3.20 released!]]></title>
      <guid>http://www.phpdeveloper.org/news/18936</guid>
      <link>http://www.phpdeveloper.org/news/18936</link>
      <description><![CDATA[<p>
The PHP project has <a href="http://php.net/index.php#id2012-12-20-1">officially released</a> versions 5.4.10 and 5.3.20 if the language:
</p>
<blockquote>
The PHP development team announces the immediate availability of PHP 5.4.10 and PHP 5.3.20. These releases fix about 15 bugs. Please note that the PHP 5.3 series will enter an end of life cycle and receive only critical fixes as of March 2013. All users of PHP are encouraged to upgrade to PHP 5.4.
</blockquote>
<p>
Downloads are <a href="http://php.net/downloads.php">available here</a> (source) or <a href="http://windows.php.net/download/">here</a> for Windows installations. The <a href="http://php.net/ChangeLog-5.php">Changelog</a> has the full list of bugs fixed these two releases. If you're interested in the migration from PHP 5.3 to 5.4 and are wondering what changes you can expect, check out <a href="http://php.net/manual/en/migration54.new-features.php">this migration guide</a> with a list of the new features and changes.
</p>]]></description>
      <pubDate>Fri, 21 Dec 2012 06:57:21 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: Compiling PHP from Source on Windows]]></title>
      <guid>http://www.phpdeveloper.org/news/18500</guid>
      <link>http://www.phpdeveloper.org/news/18500</link>
      <description><![CDATA[<p>
For most PHP developers, when they hear "compile from source" they automatically assume that the person talking means they're working with a unix variant-based system. In <a href="http://phpmaster.com/compiling-php-from-source-on-windows/">this new tutorial</a> from PHPMaster.com, though, they show how to "compile from source" on a different platform - Windows.
</p>
<blockquote>
Those working in a Windows environment are more likely to download and install PHP from precompiled packages. And while I don't disagree it's easier to use a precompiled solution, even on Unix systems, there are some advantages that can come with compiling a binary from source. [...] But be forewarned: compiling can be a frustrating task, especially on Windows! You must ensure your build environment is set up correctly, learn how to use the compiler and other build tools properly, and satisfy any library dependencies. Hopefully this article is your first step in overcoming many of these obstacles.
</blockquote>
<p>
The tutorial walks you through the steps you'll need to take to get your environment set up, including the tools you'll need to be able to perform the compile (including Microsoft's Visual C++ Express and the Windows Software Development Kit). Screenshots and commands are all included in the post to make the compile work. There's even a few instructions on compiling in the extensions you might need.
</p>]]></description>
      <pubDate>Thu, 20 Sep 2012 10:56:21 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Anthony Ferrara: The Anatomy Of Equals - Opcode Analysis]]></title>
      <guid>http://www.phpdeveloper.org/news/18248</guid>
      <link>http://www.phpdeveloper.org/news/18248</link>
      <description><![CDATA[<p>
<i>Anthony Ferrara</i> has a new post today getting into the details of <a href="http://blog.ircmaxell.com/2012/07/the-anatomy-of-equals-opcode-analysis.html">how "equals" works in PHP</a> at the opcode level. He focuses on the answer to a question he received:
</p>
<blockquote>
I was asked an interesting question via email yesterday. The question is fairly simple. The answer, not so much... So, rather than reply in an email, I figured that I'd write a post about it instead. The question, simply stated, is: "When comparing a float to an integer using ==, where does the conversion happen?"
</blockquote>
<p>
He starts with a super simple piece of test code that compares an integer (1) to a float (1.0) and walks through the process PHP takes to perform the comparison (with a double equals "=="). He talks about opcode handlers, the "fast equal function" and how it handles the casting from one type to another, C source highlights included.
</p>]]></description>
      <pubDate>Thu, 19 Jul 2012 10:11:48 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Grzegorz Godlewski's Blog: Choosing your Source Code Management System]]></title>
      <guid>http://www.phpdeveloper.org/news/18077</guid>
      <link>http://www.phpdeveloper.org/news/18077</link>
      <description><![CDATA[<p>
In a recent post to his blog <i>Grzegorz Godlewski</i> talks about some of the criteria to consider when <a href="http://blog.twelvecode.com/2012/06/10/choosing-your-source-code-management-system/">selecting your source code management tool</a> (between Subversion, Git and Mercurial).
</p>
<blockquote>
Each of them has its own advantages and disadvantages so the project's requirements, development environment and team members receptivity should be taken into consideration. Relying on my own experience in project management and using version control systems to manage the development process I've formed the conclusions listed below that may be helpful while considering usage of one of described SCM's in your own projects.
</blockquote>
<p>
He talks about how the size of the project can effect the decision and a bit more detail about what each of the version control systems are good at. The PHP project itself has <a href="http://phpdeveloper.org/news/17695">recently made the shift to git</a> away from Subversion (you can find more information <a href="http://us2.php.net/git.php">on the PHP.net site</a>).
</p>]]></description>
      <pubDate>Mon, 11 Jun 2012 10:10:53 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PerishablePress.com: Encoding & Decoding PHP Code]]></title>
      <guid>http://www.phpdeveloper.org/news/18065</guid>
      <link>http://www.phpdeveloper.org/news/18065</link>
      <description><![CDATA[<p>
On the PerishablePress.com site there's a recent article showing you how to <a href="http://perishablepress.com/encoding-decoding-php/">encode your PHP project's code</a> (though some of the methods are more obfuscation than actual encryption).
</p>
<blockquote>
There are many ways to encode and decode PHP code. From the perspective of site security, there are three PHP functions - str_rot13(), base64_encode(), and gzinflate - that are frequently used to obfuscate malicious strings of PHP code. For those involved in the securing of websites, understanding how these functions are used to encode and decode encrypted chunks of PHP data is critical to accurate monitoring and expedient attack recovery.
</blockquote>
<p>
They show examples of several methods of encoding/obfuscation of the code including <a href="http://perishablepress.com/encoding-decoding-php/#str_rot13">rot13</a>, <a href="http://perishablepress.com/encoding-decoding-php/#base64_encode">base64</a>, <a href="http://perishablepress.com/encoding-decoding-php/#gzdeflate">gzinflate/gzdeflate</a> and links to some <a href="http://perishablepress.com/encoding-decoding-php/#tools">other</a> <a href="http://perishablepress.com/encoding-decoding-php/#resources">resources</a>. 
</p>]]></description>
      <pubDate>Fri, 08 Jun 2012 10:56:26 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHP.net: PHP 5.4.1RC2 Released for Testing]]></title>
      <guid>http://www.phpdeveloper.org/news/17816</guid>
      <link>http://www.phpdeveloper.org/news/17816</link>
      <description><![CDATA[<p>
As mentioned on the main PHP.net site, the latest Release Candidate for the PHP 5.4.x series is <a href="http://www.php.net/index.php#id2012-04-13-1">now available for testing</a>:
</p>
<blockquote>
This is the 2nd release candidate. The release candidate phase is intended as a period of bug fixing prior to the stable release. The release candidate fixes a critical issue when using the internal classes in multiple threads. A complete list of changes since the last release candidate can be found in the <a href="http://git.php.net/?p=php-src.git;a=blob;f=NEWS;h=d647f8de7cf080b599a73e092d683273fbf744e8;hb=fa1437b144683eae4d253473c35e375f7b743811">NEWS</a> file.
</blockquote>
<p>
The source packages can be downloaded from <a href="http://qa.php.net/">the main QA site</a> and the Windows binary packages from <a href="http://windows.php.net/qa/">the Windows QA site</a>.
</p>]]></description>
      <pubDate>Fri, 13 Apr 2012 12:19:06 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Nikita Popov's Blog: Understanding PHP's internal array implementation (Part 4)]]></title>
      <guid>http://www.phpdeveloper.org/news/17749</guid>
      <link>http://www.phpdeveloper.org/news/17749</link>
      <description><![CDATA[<p>
<i>Nikita Popov</i> has posted the <a href="http://nikic.github.com/2012/03/28/Understanding-PHPs-internal-array-implementation">fourth part</a> of the "PHP's Source Code for PHP Developers" series he and <i>Anthony Ferrara</i> have been posting. In this latest article in the series, <i>Nikita</i> looks specifically at PHP's array implementation and how it's handed "behind the scenes".
</p>
<blockquote>
Welcome back to the fourth part of the "PHP's Source Code for PHP Developers" series, in which we'll cover how PHP arrays are internally represented and used throughout the code base.
</blockquote>
<p>
He starts with an obvious foundation: "everything's a hash table" (even properties, classes and yes, arrays). He describes what a hash table is and talks about two of the most commonly used versions of it in the PHP source - HashTable and Bucket. He gets into their usage a bit and compares this to the corresponding PHP code that uses a standard array.
</p>]]></description>
      <pubDate>Thu, 29 Mar 2012 09:16:02 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Anthony Ferrara's Blog: PHP's Source Code For PHP Developers - Part 3 - Variables]]></title>
      <guid>http://www.phpdeveloper.org/news/17711</guid>
      <link>http://www.phpdeveloper.org/news/17711</link>
      <description><![CDATA[<p>
The third part of the "PHP source for developers" series has been posted over on <i>Anthony Ferrara</i>'s blog today looking at <a href="http://blog.ircmaxell.com/2012/03/phps-source-code-for-php-developers_21.html">the variables PHP's internals use</a>.
</p>
<blockquote>
In this third post of the PHP's Source Code for PHP Developers series, we're going to expand on the prior posts to help understand how PHP works internally.  In the first post of the  series, we looked at how to view PHP's source code, how it's structured as well as some basic C pointers for PHP developers.  The second post introduced functions into the mix.  This time around, we're going to dive into one of the most useful structures in PHP: variables.
</blockquote>
<p>
He starts with one of the most important variable types used in PHP's source - the ZVAL. This is one of the keys to PHP's loose typing and can be thought of as "a class with only public properties". He gets into more detail with the properties of this "class" (value, refcount__gc, type and is_ref__gc). Also included is a look at how it's actually used - creating new ones, getting the value of them, converting their types and how the internal PHP functions parse their variables.
</p>
<p>
There's a lot more covered about variables in <a href="http://blog.ircmaxell.com/2012/03/phps-source-code-for-php-developers_21.html">the post</a> so if this is interesting stuff to you, be sure to read it all. They've done a great job of explaining one of the more complicated parts of the internals that power PHP.
</p>]]></description>
      <pubDate>Thu, 22 Mar 2012 08:30:45 -0500</pubDate>
    </item>
  </channel>
</rss>
