<?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>Wed, 22 May 2013 13:52:24 -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[Andrew Podner: Functional Testing to Improve Quality Assurance (part 1)]]></title>
      <guid>http://www.phpdeveloper.org/news/19605</guid>
      <link>http://www.phpdeveloper.org/news/19605</link>
      <description><![CDATA[<p>
<i>Andrew Podner</i> has posted the first part of a new series to his site today. He'll be looking at <a href="http://unassumingphp.com/functional-testing-to-improve-quality-assurance-part-1/">using functional testing to improve quality</a> of the resulting code and full application.
</p>
<blockquote>
 For this week, I wanted to focus on some different types of automated testing other than unit testing that can help developers build more robust applications and improve both the speed and effectiveness of quality assurance.  Specifically, this post is going to focus on functional testing. Functional testing is composed of the tests that you write which are from the user's point of view.  A functional test is used to perform quality assurance on all or part of an application utilizing the user interface as a pathway to the application. 
</blockquote>
<p>
He gives some examples of functional tests like clicking on buttons, trying a login, checking that the contents of the page are correct. He talks some about the purpose of functional testing and how it differs from unit testing. He suggests the metaphor of a race car - the pit crew would be the "unit testers" and the driver would be the "functional tester", saying whether or not all of the parts of the car are working together as they should for the race. In the next part of the series, he'll talk some about the actual software to automate this process.
</p>
Link: http://unassumingphp.com/functional-testing-to-improve-quality-assurance-part-1]]></description>
      <pubDate>Mon, 20 May 2013 09:19:17 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: MongoDB Indexing, Part 2]]></title>
      <guid>http://www.phpdeveloper.org/news/19579</guid>
      <link>http://www.phpdeveloper.org/news/19579</link>
      <description><![CDATA[<p>
PHPMaster.com has posted part two of their series looking at indexing in MongoDB databases (<a href="http://phpdeveloper.org/news/19551">part one here</a>) with some <a href="http://phpmaster.com/mongodb-indexing-2">more advanced concepts</a> Mongo makes available.
</p>
<blockquote>
In <a href="http://phpmaster.com/mongodb-indexing-1/">part 1</a> of this series we had an introduction to indexing in MongoDB. we saw how to create, use, and analyze queries with indexes giving us a good foundation to build on. In this part, we'll take a look at a few more small but important concepts, like indexing on sub-documents and embedded fields, covered queries, and index direction.
</blockquote>
<p>
They use the same "posts" collection from the previous article, showing you how to index it based on a "location" sub document and "embedded fields" inside of it. They also touch on complex sorting with a multi-field index and the idea of "covered queries." These are queries that all fields queried are part of an index as well as all returned. They finish up the article by showing you how to remove indexes too.
</p>
Link: http://phpmaster.com/mongodb-indexing-2]]></description>
      <pubDate>Mon, 13 May 2013 10:36:46 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[PHPMaster.com: MongoDB Indexing, Part 1]]></title>
      <guid>http://www.phpdeveloper.org/news/19551</guid>
      <link>http://www.phpdeveloper.org/news/19551</link>
      <description><![CDATA[<p>
New on PHPMaster.com is the first part of their series about <a href="http://phpmaster.com/mongodb-indexing-1/">indexing in MongoDB</a>, a method for optimizing your collections to make querying them even faster. They cover the five main types of indexes and situations where they can help.
</p>
<blockquote>
Indexing is one of the more important concepts of working with MongoDB. A proper understanding is critical because indexing can dramatically increase performance and throughput by reducing the number of full documents to be read, thereby increasing the performance of our application. Because indexes can be bit difficult to understand, this two-part series will take a closer look at them.
</blockquote>
<p>
They look at the default "_id" index, secondary, compound, multikey and multikey compound indexes. Example documents and results are included as well as some of the options that can be set on the index types to tweak performance. They finish up the article with a look at some of the limitations and considerations to think about when using indexing, including that they cannot be used with regex queries.
</p>
Link: http://phpmaster.com/mongodb-indexing-1]]></description>
      <pubDate>Mon, 06 May 2013 11:50:44 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Luis Atencio: Notes on Continuous Delivery - Implementing a Testing Strategy]]></title>
      <guid>http://www.phpdeveloper.org/news/19508</guid>
      <link>http://www.phpdeveloper.org/news/19508</link>
      <description><![CDATA[<p>
<i>Luis Atencio</i> has posted the latest article in his "Continuous Delivery" series today, this time with a focus on <a href="http://www.luisatencio.net/2013/04/notes-on-continuous-delivery.html">implementing a testing strategy</a>. This is the fourth post in the series (<a href="http://phpdeveloper.org/news/19144">part 1</a>, <a href="http://phpdeveloper.org/news/19240">part 2</a> and <a href="http://phpdeveloper.org/news/19367">part 3</a>).
</p>
<blockquote>
There are three things in life that are always held to be true: we will die someday; we will pay taxes; and software will have bugs.... LOL [...] A testing strategy is often overlooked in software projects. This should not be too surprising, we want to build applications quickly and release them quickly. However, leaving quality out of the picture or towards the end are terrible mistakes.
</blockquote>
<p>
He talks some about the different types of testing that revolve around software development - "business facing" and "technology facing." These are each split down even further into things like acceptance, integration and unit testing.
</p>
Link: http://www.luisatencio.net/2013/04/notes-on-continuous-delivery.html]]></description>
      <pubDate>Thu, 25 Apr 2013 11:55:24 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[NetTuts.com: HTTP: The Protocol Every Web Developer Must Know - Part 1]]></title>
      <guid>http://www.phpdeveloper.org/news/19433</guid>
      <link>http://www.phpdeveloper.org/news/19433</link>
      <description><![CDATA[<p>
On NetTuts.com there's a new tutorial about what they think is the one thing every web developer should understand - <a href="http://net.tutsplus.com/tutorials/tools-and-tips/http-the-protocol-every-web-developer-must-know-part-1/">the HTTP protocol</a> and how its used in web-based communications.
</p>
<blockquote>
HTTP stands for Hypertext Transfer Protocol. It's a stateless, application-layer protocol for communicating between distributed systems, and is the foundation of the modern web. As a web developer, we all must have a strong understanding of this protocol. Let's review this powerful protocol through the lens of a web developer. We'll tackle the topic in two parts. In this first entry, we'll cover the basics and outline the various request and response headers. 
</blockquote>
<p>
They cover some of the basics of the protocol first including its statelessness, the concept of URLs and the HTTP "verbs" (like GET, POST and DELETE). They also briefly cover the HTTP response codes (ex. 200, 304) and the flow of the request and response to and from the web server. They also look at some of the basic HTTP headers and the actual low-level text formats of the requests/responses.
</p>
<p>
There's a section at the end of the post that links you to a few tools that you can use to view the HTTP messaging happening in your requests, some of which you might already have. They also briefly cover the use of HTTP in a few libraries - ExpressJS, Ruby on Rails and jQuery's Ajax handling.
</p>
Link: http://net.tutsplus.com/tutorials/tools-and-tips/http-the-protocol-every-web-developer-must-know-part-1/]]></description>
      <pubDate>Tue, 09 Apr 2013 10:56:28 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[TechFlirt: Object Oriented Programming in PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/19400</guid>
      <link>http://www.phpdeveloper.org/news/19400</link>
      <description><![CDATA[<p>
If you've been writing mostly procedural PHP code and are looking to make that "next step" up to working with objects and classes (OOP), you should check out <a href="http://www.techflirt.com/tutorials/oop-in-php/index.html">this detailed tutorial</a> introducing you to some of the primary OOP-in-PHP concepts.
</p>
<blockquote>
Object oriented programming (OOP) was first introduced in php4. Area for oop in php version 4 was not very vast. There were only few features  available in php4. Major concept of the object oriented programming in PHP is introduced from version 5(we commonly known as php5). [...] But still in php5 object model is designed nicely. If you have good understanding of OOP then you can create very good architecture of your php application.  You only need to know some of the basic principles of object oriented programming and how to implement that concept of oop in php. 
</blockquote>
<p>
While the wording is slightly odd in some spots (English doesn't seem to be the author's first language), it's' a great introduction to the major OOP-related topics including:
</p>
<ul>
<li><a href="http://www.techflirt.com/tutorials/oop-in-php/classes-and-objects-php.html">Classes and Objects</a>
<li><a href="http://www.techflirt.com/tutorials/oop-in-php/visibility-in-php-classes.html">Visibility in PHP</a>
<li><a href="http://www.techflirt.com/tutorials/oop-in-php/abstract-classes-interface.html">Abstract classes and interfaces</a>
<li><a href="http://www.techflirt.com/tutorials/oop-in-php/object-cloning-in-php.html">Object cloning</a>
<li><a href="http://www.techflirt.com/tutorials/oop-in-php/php-method-chaining.html">Method chaining</a>
</ul>
<p>
Each section also has downloadable code to go along with the examples, making it easier to follow and test out the actual scripts.
</p>
Link: http://www.techflirt.com/tutorials/oop-in-php/index.html]]></description>
      <pubDate>Tue, 02 Apr 2013 13:05:23 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Juan Treminio: Unit Testing with PHPUnit Tutorial Series]]></title>
      <guid>http://www.phpdeveloper.org/news/19270</guid>
      <link>http://www.phpdeveloper.org/news/19270</link>
      <description><![CDATA[<p>
<i>Juan Treminio</i> has a series of new posts over on his site - a four part series covering unit testing with PHPUnit. There's three parts to the series (right now) covering everything from an intro to PHPUnit out to some more advanced techniques.
</p>
<blockquote>
For months now I have been telling myself I would create an in-depth, multi-part series of articles that would take a developer from being a complete newbie at testing to have them mocking classes left and right and asserting until the break of dawn. This series will introduce you to the core concepts of testing. It will tell you why statics are bad, why dependency injection is king, what the difference between a mock and a stub is and how to love the red and green bar.
</blockquote>
<p>The four parts of the series he's posted are:</p>
<ul>
<li><a href="http://jtreminio.com/2013/03/unit-testing-tutorial-introduction-to-phpunit">Unit Testing Tutorial Part I: Introduction to PHPUnit</a>
<li><a href="http://jtreminio.com/2013/03/unit-testing-tutorial-part-2-assertions-writing-a-useful-test-and-dataprovider">Unit Testing Tutorial Part II: Assertions, Writing a Useful Test and @dataProvider</a>
<li><a href="http://jtreminio.com/2013/03/unit-testing-tutorial-part-3-testing-protected-private-methods-coverage-reports-and-crap">Unit Testing Tutorial Part III: Testing Protected/Private Methods, Coverage Reports and CRAP</a>
<li><a href="http://jtreminio.com/2013/03/unit-testing-tutorial-part-4-mock-objects-stub-methods-dependency-injection/">Unit Testing Tutorial Part IV: Mock Objects, Stub Methods and Dependency Injection</a>
</ul>]]></description>
      <pubDate>Tue, 05 Mar 2013 09:13:25 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Matthew Weier O'Phinney: RESTful APIs with ZF2, Part 3]]></title>
      <guid>http://www.phpdeveloper.org/news/19234</guid>
      <link>http://www.phpdeveloper.org/news/19234</link>
      <description><![CDATA[<p>
<i>Matthew Weier O'Phinney</i> has posted the <a href="http://mwop.net/blog/2013-02-25-restful-apis-with-zf2-part-3.html">third part of his series</a> about making RESTful APIs with Zend Framework 2 (parts <a href="http://phpdeveloper.org/news/19170">one</a> and <a href="http://phpdeveloper.org/news/19180">two</a>). In this latest part of the series, he talks more about documenting the API and what commands can be executed.
</p>
<blockquote>
In this post, I'll be covering documenting your API -- techniques you can use to indicate what HTTP operations are allowed, as well as convey the full documentation on what endpoints are available, what they accept, and what you can expect them to return. [...] hy Document? If you're asking this question, you've either never consumed software, or your software is perfect and self-documenting. I frankly don't believe either one.
</blockquote>
<p>
He covers a few reasons why you should document your API and where he thinks it should live to be the most useful. He includes a few different ideas and two things he definitely thinks should exist for your API - the use of OPTIONS and end-user documentation. The first is a HTTP header (ZF2 code example included) that tells the API consumer what they can do with an endpoint. The second type is more useful for the human reader, giving them a better overall perspective on what the API can do - still served through the API but in a bit more understandable format.
</p>]]></description>
      <pubDate>Mon, 25 Feb 2013 12:21:30 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Matthew Weier O'Phinney: RESTful APIs with ZF2, Part 2]]></title>
      <guid>http://www.phpdeveloper.org/news/19180</guid>
      <link>http://www.phpdeveloper.org/news/19180</link>
      <description><![CDATA[<p>
<i>Matthew Weier O'Phinney</i> has posted the <a href="http://www.mwop.net/blog/2013-02-13-restful-apis-with-zf2-part-2.html">second part of his series</a> looking at creating RESTful APIs with the Zend Framework v2. In the <a href="http://phpdeveloper.org/news/19170">previous post</a> he covered some of the basics of data and structure. In this new article he looks at content types, status codes and two ways to represent them back to your users.
</p>
<blockquote>
In my <a href="http://www.mwop.net/blog/2013-02-11-restful-apis-with-zf2-part-1.html">last post</a>, I covered some background on REST and the Richardson Maturity Model, and some emerging standards around hypermedia APIs in JSON; in particular, I outlined aspects of Hypermedia Application Language (HAL), and how it can be used to define a generic structure for JSON resources. In this post, I cover an aspect of RESTful APIs that's often overlooked: reporting problems.
</blockquote>
<p>
He starts with some of the things around error handling and APIs that bother him and why just returning a status code representing an error isn't enough. He suggests two possible solutions to this issue - two messaging formats, API-Problem and vnd.error. He gives brief summaries of each and includes example output to give them some context.
</p>]]></description>
      <pubDate>Thu, 14 Feb 2013 09:15:06 -0600</pubDate>
    </item>
  </channel>
</rss>
