2013年1月31日星期四

Site News: Blast from the Past - One Year Ago in PHP

Here's what was popular in the PHP community one year ago today:

Community News: Packagist Latest Releases for 01.31.2013

Recent releases from the Packagist:

PHPMaster.com: PHP and the i, Part 3


On PHPMaster.com today David Shirey is back with the third part of his series looking at using PHP on the IBM i (formerly the Series i) platform. In his previous articles he's introduced the platform and shown what knowledge you'll need to get started. In this latest post, he talks about some implementation ideas to keep in mind.



No one ever talks about how to create quality pages, what they should look like, how should they be structured, and so on. The reason for that is simple: we don't need no stinkin' instructions for that! Everyone knows how to design good screens (opps, pages). That's the easy part, right? Well, maybe not. [...] Of course, business pages are different from the pages that we may develop for a blog or website.


He goes on to talk about things like the number of "switches" (shifts in context between just using the keyboard vs using the mouse as well) and how you should "mirror the task" not the database that lives behind it. He also makes a recommendation about keeping the important things "above the fold". He notes that, unlike some of the usual sites out on the web, business applications are a bit more about usefulness and less about style.

Ruslan Yakushev: PHP Troubleshooting in Windows Azure Web Sites


In the latest post to his site, Ruslan Yakushev looks at some simple ways you can debug your PHP-based applications running on a Windows Azure platform.



The need to diagnose and troubleshoot application's failures often comes up during deployment to a hosting environment. Some configuration settings in hosting server may differ from what application expects. Often it is not as easy to figure out the cause of the problem in a hosting environment as it is on a development machine. I found the following techniques useful when troubleshooting errors in PHP applications hosted in Windows Azure Web Sites.


He shares seven different tips, some pretty simple, others a bit more difficult requiring other software to be up and working:



  • Using phpinfo()
  • Checking the wincache settings
  • Looking at your error logs
  • Turning on the display_errors setting
  • Turning on HTTP logging, detailed errors and failed request tracking in the control panel
  • Using XDebug
  • Getting the statistics for your ClearDB instance

2013年1月30日星期三

Community News: Latest Releases from PHPClasses.org

Community News: Packagist Latest Releases for 01.30.2013

Recent releases from the Packagist:

MaltBlue.com: Zend Framework 2 ServiceManager - Web Application Development Simplified


Following in the pattern of his previous articles about parts of Zend Framework v2, Matt Setter has posted this new article focusing on the ServiceManager component of the framework and what roles it plays.



The Zend Framework 2 Service Manager simplifies web application development in a number of ways, primarily by making configuration a breeze. In this, the 4th post introducing Zend Framework 2, you will learn what the ServiceManager is, how to use it and how it simplifies app development time. [...] In this, the fourth and final installment, we look at the ServiceManager component. This is a highly critical, but potentially misunderstood, aspect of the framework. One that, when understood, makes the rest of the framework a breeze (well, close).


He starts by explaining what the intent of the ServiceManager is and how it implements the Service Locator design pattern. Simply put, it's a repository for the objects/services your application needs to run and allows them to be set and fetched easily. He talks some about how to configure the manager and provides a simple code example showing the addition of objects to a manager instance. These objects (factories) are then called via a "get" method and used directly.



This is the burning question in this post. Does it really make web application development simpler? In short, yes. [...] At first it requires effort, it requires discipline and it requires concentration. It's not easy, sure. But with time, this new skill makes doing what you used to do much simpler, such that you do more in less time, with less effort, with less concentration.

Maarten Balliauw: Running unit tests when deploying to Windows Azure Web Sites


Maarten Balliauw has a new post to his site showing you how to execute your unit tests (in this case PHPUnit) when you deploy your instance out to the Windows Azure platform.



When deploying an application to Windows Azure Web Sites, a number of deployment steps are executed. For .NET projects, msbuild is triggered. For node.js applications, a list of dependencies is restored. For PHP applications, files are copied from source control to the actual web root which is served publicly. Wouldn't it be cool if Windows Azure Web Sites refused to deploy fresh source code whenever unit tests fail? In this post, I'll show you how.


He creates a super basic script using Silex and writes up a test with some dummy assertions, checking if true equals true. He then steps you through updating the current "deploy.sh" script to add in a call to execute PHPUnit and an "exitWithMessageOnError" statement. This statement kicks it back and causes the deployment to fail when tests don't pass (as seen here).

2013年1月29日星期二

Community News: Latest PECL Releases for 01.29.2013

Latest PECL Releases:

Community News: Packagist Latest Releases for 01.29.2013

Recent releases from the Packagist:

PHPMaster.com: Dependency Injection with Pimple


On PHPMaster.com there's a new tutorial showing you how to use Pimple (the dependency injection container from the Symfony folks) in your application to manage objects and resources.



In application development, we try to create independent modules so that we can reuse code in future projects. But, it's difficult to create completely independent modules which provide useful functionality; their dependencies can cause maintenance nightmares unless they are managed properly. This is where Dependency Injection comes in handy, as it gives us the ability to inject the dependencies our code needs to function properly without hard coding them into the modules.


They start with a look at the problem with working with "concerete dependencies", ones that are hard-coded into your classes making them not only hard to test but potentially difficult to maintain. They include an example of this (a "SocialFeeds" class and friends) and then one of two ways to fix the situation. They start with using constructor-based injection, injecting the Twitter service into the main feeds object. They also talk about another method - setter-based injection - where the objects are injected via specific methods on the object.



As a third alternative, though, they get to using Pimple to manage the objects, making it easier to inject just the one resource into your classes and extract the objects you need from there. There's also a bit of "advanced" usage of Pimple showing the use of the "share" and "extend" methods.

Symfony Blog: Symfony Live 2013 tour: time to start the new season!


As is mentioned in this new post to the Symfony Blog, it's "time to start a new season" of Symfony-related events (both at other events and Symfony Live).



I'm so happy to announce to all of you Symfony folks, the super exciting Symfony Live year that is waiting for you! This time I promise, this is going to be "Great News" for all of you!

Events mentioned for this year (so far) are:




The largest announcement, though, is the SymfonyCon Europe that will be new this year, an all Symfony conference to be held somewhere in Europe later in 2013.

2013年1月28日星期一

Community News: Latest PEAR Releases for 01.28.2013

Latest PEAR Releases:

Community News: Packagist Latest Releases for 01.28.2013

Recent releases from the Packagist:

Andrew Podner: Intro to PHP Comments and Docblocks


If you've ever looked at your code an wondered about its commenting, if there was a kind of "best practice" to follow when it comes to its structure, you should read this article from Andrew Podner about docblocks.



The subject is how to properly document code with PHP comments and docblocks. This one took a while for me to really just accept as a part of the development process. To me now, the comments are now just as much a part of the application as the code is. I believe it is that important. With IDE's today, there really is no reason not to have good documentation in your source code.


He talks some about his own reluctance at first to use comments and how it helped him remember what his thought process was behind parts of this code. He includes an example of a typical docblock structure, showing the general description, parameters and a "return" value. He also includes something interesting in the topic of documentation - good variable names. There's links included to two tools that can take these standardized comments from your code and build HTML documentation from it - phpDocumentor and ApiGen.



You can find out more about the PHP docblock standards from this site.

Phil Sturgeon: PHP 6: Pissing in the Wind


With some of the recent talk about the consistency of naming methods in PHP (or lack thereof) Phil Sturgeon has put together some ideas about why this (and unicode) changes aren't happing in the language.



PHP is well known for having an inconsistent API when it comes to PHP functions. Anyone with an anti-PHP point of view will use this as one of their top 3 arguments for why PHP sucks, while most PHP developers will point out that they don't really care. [...] Another big thing that anti-PHP folks laugh about is the lack of scalar objects, so instead of $string->length() you have to do strlen($string). ANOTHER thing that people often joke about is how PHP 6.0 just never happened, because the team were trying to bake in Unicode support but just came across so many issues that it never happened.


He shares an "obvious answer" to the problems and shares a theory as to why it's not happening - that no one is really working on out (outisde of this POC) and some of the handling with the recent property accessors RFC. He finishes off the post with three more points, all related to the results of the voting - little points seem to get voted in easier, the representation of developers in the process and that at least one of the "no" votes had to do with not wanting to maintain the results.



Making changes to this language should not be blocked just because a quiet minority of the core team don't like the idea of being asked to do stuff.


Be sure to check out the comments on the post - there's lots of them, so be sure you have some good time to read.

2013年1月25日星期五

Site News: Popular Posts for the Week of 01.25.2013

Popular posts from PHPDeveloper.org for the past week:

Community News: Packagist Latest Releases for 01.25.2013

Recent releases from the Packagist:

Vinícius Krolow: Some tips to improve your codes readability


In this new post to his site Vinícius Krolow shares some tips he thinks will help to make your PHP code more readable in the long run.



What about code readability, from my point of view is one of the most important thing in the code. Who writes code that is easy to read, writes good code. Probably reading code is where you spent most part of your time, and not only your code, probably code of your team mates, or maybe code from the open source community, so write code that is simple and is easy to understand it's really important.

His tips (seven of them) are:



  • Comment before write your code (DocBlock)
  • Return frequently, Return early
  • Break, Continue
  • Code Standard / Name conventions
  • Throw Exception
  • Comment often, but not write stupid comments
  • Methods can be always smaller than they are


It's a little difficult to read as the English isn't the speaker's native tongue, but it gets the point across. He also recommends reading this if you'd like more information about writing better OOP code that's easier to read.

Reddit.com: Let's Make PHP's Function Names Consistent!


On Reddit.com there's a heated discussion going on in response to this bug filed asking about aliasing PHP function names to make them more consistent (specifically "htmlentities_decode" versus "html_entity_decode").



[...] Current naming conventions are really horrible. For instance, look at differences between str_replace, strlen, parse_str, htmlspecialchars. All work with same type but their names are completely different. So, string functions should go to String namespace (Stringreplace()), array functions to Array namespace (Arraysearch()) and so on.


Back in the Reddit post most of the commentors agree that this kind of thing would be beneficial to the language, but - as several point out - this could have serious backwards compatibility issues. What do you think? Voice your opinion!

2013年1月24日星期四

Site News: Blast from the Past - One Year Ago in PHP

Here's what was popular in the PHP community one year ago today:

Community News: Packagist Latest Releases for 01.24.2013

Recent releases from the Packagist:

PHP.net: PHP 5.5.0 Alpha4 released


On PHP.net today they've announced the tagging and release of the latest alpha for the PHP 5.5.0 series - PHP 5.5.0 alpha4:



The PHP development team announces the release of PHP 5.5.0alpha4. This release fixe some bugs from alpha3 and add some new features. All users of PHP are encouraged to test this version carefully, and report any bugs in the bug tracking system.


There's new improvements included in this non-production release including class name resolution with "class" keyword and the DateTimeImmutable class. You can see the NEWS file for the complete list of changes. If you'd like to help test it out, you can download the preview release here (or here for Windows users).

Anthony Ferrara: Mediators - Programming With Anthony


Anthony Ferrara has posted his latest "Programming with Anthony" video episode today looking at the Mediator design patter. This pattern is more of a behavioral structure, defining how objects interact with each other.



The Mediator Pattern is an extremely flexible and useful tool to help decouple your code and provide added flexibility in your applications. We'll explore the basic concept of a Mediator, some places you've used it and some things that you can do to improve upon the basic concept.


You can watch the video either in the post or over on YouTube. If you enjoy the episode, you should also consider the rest of the videos in the series, all available from this playlist.

2013年1月23日星期三

Community News: Latest Releases from PHPClasses.org

Community News: Packagist Latest Releases for 01.23.2013

Recent releases from the Packagist:

Francois Zaninotto: Node.js for PHP Developers Series


If you're a PHP developer and have ever wanted to branch out into learning another language, Node.js is a popular choice right now. To help you ease into some of the concepts that Node development involves, Francois Zaninotto has come up with his "Node.js for PHP Developers" series of posts (4 of them now, one previously mentioned here):




in each article he provides code examples showing "the Node way" versus "the PHP way" to do various things. It's a great little series and can definitely kickstart your Node.js knowledge.

Lorna Mitchell: Five Clues That Your API isn't RESTful


Lorna Mitchell has posted a quick checklist of things you can ask about your API to see if it's RESTful or not (five of them):



I get a lot of emails asking me to get involved with API projects, and that means I see a lot of both implemented and planned "RESTful" APIs. [...] A service of some other description may work better for other scenarios or skill sets, and non-RESTful services can be very, very useful. If you tell me that your service is RESTful, then I expect it to be. If you're not sure, look out for these clues:


  • It has a single endpoint
  • All requests are POSTs
  • Response metadata is in the body, not header
  • There are verbs in the URL
  • The URL includes method names


She suggests, though, that "being RESTful" isn't a requirement for "being useful" when it comes to APIs.

2013年1月22日星期二

PHPMaster.com: Getting Started with Varnish


On PHPMaster.com today there's a new tutorial that can help you increase the performance of your application relatively painlessly with the help of the Varnish proxy tool. The article helps you get started.



Varnish is a reverse proxy server; it sits in front of your web server and serves content from your server and no one else's. Reverse proxy servers are tightly coupled to the web server and can act on messages received from it. [...] Simply put, Varnish does one thing: serve web content super fast.


You'll need command line access to the machine (as well as permissions to install the software) but getting it installed is a simple "apt-get" away. There's a bit of configuration to set up to get it up and working, but it's only a few lines...and examples are included in the tutorial. They get into some of the more advanced configuration options too, like the time-to-live and changing the port it listens on. Varnish isn't just for PHP applications either - it can be used effectively for any kind of web application as it's just a proxy layer that sits on top and waits for requests.

2013年1月21日星期一

Community News: Latest PEAR Releases for 01.21.2013

Latest PEAR Releases:

Community News: Packagist Latest Releases for 01.21.2013

Recent releases from the Packagist:

PHPMaster.com: PHP Traits: Good or Bad?


In this new post to PHPMaster.com, Callum Hopkins takes a look at one of the more recently added features of the PHP language, traits an tries to determine if they're a good or bad thing for PHP development.



In early March 2012, the PHP Group announced the release of PHP 5.4. Developer eagerly anticipated the release because of the many new features 5.4 would bring, the most sought after being traits. [...] Traits have have been generally accepted by the PHP development community, mainly because it's a feature that exists within other programming languages like Java, C++, and Python. [...] Are they a feature which will help raise the level of PHP development, or are they just a fad?


The starts with a few reasons why he thinks traits are bad like their potential for abuse and the difficulties that could be caused by using them instead of something like an interface. On the good side, though, he mentions things like allowing for "multiple inheritance" and their addition showing growth in the language.

NetTuts.com: Better Workflow in PHP With Composer, Namespacing, and PHPUnit


On NetTuts.com there's a new screencast posted showing you a good way to create a better workflow in your PHP development using Composer and PHPUnit.



In this video tutorial, we'll again focus on workflow. Specifically, we'll use Composer's built-in autoloading capabilities, along with namespacing, to make for an elegant testing experience. We'll also review a handful of PHPUnit best practices, as we get setup with these tools.


He shows you how to use Composer to load in the packages from other projects (as well as your own) and using PHPUnit to execute unit tests for your application. He uses test-driven development, but it's not a required part of the workflow. He helps you create a simple "Calculator" test. He also shows how to manually modify the Composer classmap to load in your own classes.

2013年1月18日星期五

PHP.net: PHP 5.4.11 and PHP 5.3.21 released!


On PHP.net the project has posted about the release of the latest versions in the PHP 5.4.x and 5.3.x series - PHP 5.4.11 and 5.3.21:



The PHP development team announces the immediate availability of PHP 5.4.11 and PHP 5.3.21. These releases fix about 10 bugs. All users of PHP are encouraged to upgrade to PHP 5.4.


You can check out the Changelog if you're interested in what bugs were corrected by this release. The downloads are available via the main downloads page (or here for the Windows users out there).

Site News: Popular Posts for the Week of 01.18.2013

Popular posts from PHPDeveloper.org for the past week:

Community News: Packagist Latest Releases for 01.18.2013

Recent releases from the Packagist:

NetTuts.com: PSR-Huh?


On NetTuts.com today they've posted a good primer for those that may have heard about the PSR standards that have been introduced to PHP but aren't quire sure what they are (or what they mean to you as a developer).



If you're an avid PHP developer, it's quite likely that you've come across the abbreviation, PSR, which stands for "PHP Standards Recommendation." At the time of this writing, there are four of them: PSR-0 to PSR-3. Let's take a look at what these are, and why you should care (and participate).


They start with a brief history of the standards, the PHP-FIG (Framework Interoperability Group) and where the idea for the PSRs came from. Then the article gets into the details of each:



  • PSR-0: Autoloader Standard
  • PSR-1: Basic Coding Standard
  • PSR-2: Coding Style Guide
  • PSR-3: Logger Interface


They also do a good job mentioning some of the criticism that's come with the standards and what sort of future there is including the creation of a standard for a HTTP messaging package.

/Dev/Hell Podcast: Episode 26: Sassy!


The /Dev/Hell podcast has released their latest episode, #26 - "Sassy!" The podcast is hosted by PHP community members Chris Hartjes and Ed Finkler.



The first episode of 2013 find Chris and Ed talking about the tragedy of Aaron Swartzs' suicide, both in the context of governmental power and mental illness. We also talk about Ed's favorite (and only tolerable) Apple-related podcast ending. Finally, Ed rambles about SASS, a superset of CSS3 that makes writing CSS less painful.


You can listen to this latest episode using the in-page player or by grabbing the mo3 directly. You can also subscribe to their feed to get this and the latest updates about the podcast.

2013年1月17日星期四

Site News: Blast from the Past - One Year Ago in PHP

Here's what was popular in the PHP community one year ago today:

Community News: Packagist Latest Releases for 01.17.2013

Recent releases from the Packagist:

Engine Yard Blog: PHP Mentoring and the Importance of the Software Apprenticeship


On the Engine Yard blog there's a new post written up by Elizabeth Smith talking some about the mentoring of PHP developers and how being both a mentor and a mentee is a good thing for you and your development life.



Some believe programming is a science, with well-defined rules that if properly followed always give you the same outcome. Some believe programming is engineering, practical application of some kind of pure science such as math. I personally feel programming is a craft. That word often makes people blink a few times, especially those steeped in logic. Craftsmanship means applying specialized knowledge with skill in a practical manner.


She goes on to apply more of the ideas of "craftsmanship" to development work. She notes that she is where she is today because of the people that took the time to mentor her and guide her towards being a better developer. She talks about the networking options mentoring can provide as well as the official PHP Mentoring project that she helped to found.



At the end of the day, I don't work because I have to, I work because I want to, because I need to improve the technology that people use every day. The tools and techniques used today won't be the ones used 20 years from now, so I don't believe in holy wars over languages, operating systems, or coding standards.

Anthony Ferrara: Iterators - Programming With Anthony


Anthony Ferrara is back again with another installment in his "Programming with Anthony" video series. In this new episode he takes a loot at iterators in PHP and how they can be used effectively.



Today's Programming With Anthony video focuses on the concept of Iterators. We'll look at the abstraction that they represent, how they can be used and some of the benefits of using them. When used correctly, Iterators can lead to very efficient, flexible and clean code.


You can also watch the video directly on YouTube and check out the rest of the series in his playlist. Other topics include dependency injection, boolean logic and prepared statements.

2013年1月16日星期三

Community News: Latest Releases from PHPClasses.org

Community News: Packagist Latest Releases for 01.16.2013

Recent releases from the Packagist:

Community News: Dutch PHP Conference (2013) Call for Papers Opens


The Dutch PHP Conference has officially opened their Call for Papers for this year's event (happening in early June):




We're back! And we are glad to announce that we'll be organising another edition of the Dutch PHP Conference, which will be held in Amsterdam from 6th to 8th June 2013.



Submissions should be relevant to PHP developers, to help them to expand their skill set and improve their practices. In particular we'd like to receive proposals regarding emerging technologies, performance and scalability, platforms and best practices. The standard conference sessions should be 45 minutes and tutorials are 3 or 6 hours in length (note that 6 hours is our preference).



As always we're excited about all kinds of different topics. You could say that as long as it's somehow related to PHP and you're really excited about it, we want to hear it!




You can find out more about the conference in general from the main conference site.

NetTuts.com: Why 2013 is the Year of PHP


On NetTuts.com today there's a new article that suggests that 2013 is the "Year of PHP" and how recent additions to the language are going to effect its future.



2012 was an excellent year for the PHP community, thanks to many badly needed features being added to version 5.4, as well as the countless projects, advancing PHP to the next level. In this article, I'd like to review a handful of the issues that people had with PHP in the past, and provide a glimpse at why 2013 just may be the year of PHP!


They talk about some of the hostility (stigma) that's always been present when people talk about using PHP and a reminder that PHP, as good as it is, isn't perfect either. They talk some about the current state of the language and community and about how tools like Composer and methods like test-driven development (as well as major features being added to the language) have it poised for even more growth in the next year.

Gonzalo Ayuso: Handling several DBALs in Symfony2 through the Dependency Injection with PHP


Gonzalo Ayuso has a second post in his series looking at using the Symfony2 dependency injection container with Doctrine functionality. In his previous post he talked about sharing PDO connections via the DIC. In this latest one it's focused on the sharing of DBALs from Doctrine.



OK. We can handle PDOs connections inside a Symfony2 application, but what happens if we prefer DBAL. As we know DBAL is built over PDO and adds a set of "extra" features to our database connection. It's something like PDO with steroids.


He includes the (PHP) configuration to set up the DBAL and the YAML definition to set it up in the DIC's configuration. As an update to the post, he also points out a bundle for Symfony2 that lets Doctrine do this natively - check out this documentation on github.

2013年1月15日星期二

Community News: Latest PECL Releases for 01.15.2013

Latest PECL Releases:

Community News: Packagist Latest Releases for 01.15.2013

Recent releases from the Packagist:

Simon Jodet: Partial mocks with Mockery


Simon Jodet has a new post to his site for the Mockery users out there (a mocking tool used in unit testing) showing how he created his partial object mocks.



I really like atoum and highly recommend it. However, because it's a young project, I have two problems with it: The documentation was really lagging but it's getting there and integration with other tools is poor. [...] And then I stumbled on Mockery. Unlike atoum, it doesn't replace PHPUnit, it just replaces its mocking system with a more elegant, powerful and reliable one. The big plus of Mockery over PHPUnit is that you don't need to have the class to mock to create a mock. [...] But writing partial mocks with Mockery is not obvious.


He illustrates with a "Database" class example containing four methods, only three of which he wants to mock out - dropTable, listTables and getSchema. The fourth method, "reset", is then called directly and the mocked methods are used inside that. The database connection mock is then injected into the Database mock and the test is run. Complete code examples are provided.

Community News: PSR-3 Accepted - Logger Interface


The PHP-FIG (Framework Interoperability Group) has recently accepted the PSR-3 definition for a standardized Logger interface structure that can be used for interoperability between frameworks (and other tools).



The main goal is to allow libraries to receive a PsrLogLoggerInterface object and write logs to it in a simple and universal way. Frameworks and CMSs that have custom needs MAY extend the interface for their own purpose, but SHOULD remain compatible with this document. This ensures that the third-party libraries an application uses can write to the centralized application logs.


The implementation of this structure into your application makes it easier should you decide to swap out logging tools or want to create your own that can be used across several different frameworks. This is the third PSR to be accepted by the group, following PSR-1 and PSR-2 more related to coding standards.

2013年1月14日星期一

Community News: Packagist Latest Releases for 01.14.2013

Recent releases from the Packagist:

7PHP.com: Interview with Derick Rethans - The Father Of The PHP Swiss-Army Knife aka Xdebug


On 7PHP.com today Khayrattee Wasseem has posted his latest interview with a member of the PHP community - this time it's Derick Rethans "The Father Of The PHP Swiss-Army Knife aka Xdebug".



In this edition I talked with Derick Rethans the Father Of The PHP developer's Swiss-Army Knife aka Xdebug. Derick is an expert when it comes to the PHP Internals; no wonder he is viewed as a vibrant and "man of action" within The PHP Community. As a PHP Core Contributor, he has been at the crux of many PHP extensions and variations; the mcrypt, date and input-filter extensions, bug fixes, additions and even leading the QA team.


Derick answers questions about how he got involved with PHP and how he thinks it compares from then to now. He also talks some about what tools he uses for his development and more details behind Xdebug's origins and PHP extensions in general.

Andrew Podner: Lithium: Getting Stuff From Your Database


Andrew Podner has a new post for those wanting to find out more about the Lithium framework and using models to work with your database.



Today I want to provide a tutorial on how to do some basic interaction with a database in Lithium, and I am going to rely on MySQL as a database for the purposes of this tutorial, although you have other options like MongoDB, as an example.


His example script uses the idea of "blog posts" stored in a MySQL table and code snippets are included showing how to:



  • Create the model class based off of the core Lithium one
  • Select all of the records from the table
  • Filter down the returned values with "magic finder" methods (like "findAllByStatus")


You can find out more about the framework in the project's documentation section of their site.