|Welcome to the 40th edition of the phpweekly.com newsletter!
You are just in time to register for this month's Nomad PHP, taking place TONIGHT, with presentations from Paul Jones and Chris Hartjes.
The Lately in PHP podcast team discuss the Facebook HipHop Virtual Machine, who's evolution has lead to it being considered as a possible replacement for Zend Engine in PHP 6.
Plus, if you are not satisfied with your chosen framework's solution, you may be interested to learn about Guzzle, an independent HTTP client for PHP.
Finally, have you ever wanted to know the difference between a conference and an unconference....?
It's all here in this week's edition,
php[architect] To Produce Orange ElePHPant Mascots
The PHP elePHPant mascot, brainchild of Vincent Pontier, has been around for years and turned into a plush blue furry toy. Recently, the elePHPant has been receiving a revival of interest and the blue-furred variety has been joined by multicolored brethren, each one produced by a different company. The elePHPant has been crafted in blue, red, pink and green. It's now the turn of php[architect], who wish to produce an elePHPant in their signature orange. But as it is such an expensive and long winded process, they have turned to the PHP community for help.
PHP - The Future of Packages
Matthias Noback recently posted a generalisation on twitter about phpclasses.org - "Why does phpclasses.org still exist? Most of the "packages" contain dangerous, stupid or useless code". Manuel Lemos responded and helped Matthias realise that they do what they can to encourage people to do a good job. This has prompted him, within this article, to push things a bit further, proposing a different role for a community site like PHP Classes. He also outlines some steps that Packagist should take to become a better package repository.
Google Code is Dead
Last year Google announced they would no longer provide a 'downloads' feature on google code hosting for new projects. Starting January 15th 2014, creating new downloads would also no longer be possible for existing projects. This has prompted Evert Pot to create a script that will download all 92 SabreDAV releases from google code, and parse the ChangeLog, among other things. Find the results here.
Framework Tradeoffs For Beginners: Product Creation vs Program Maintenance
Following on from an article published here last week by Phil Sturgeon, entitled "The "Framework" is Dead, Long live the Framework", Paul Jones responds with some of his thoughts about framework trade offs. Primarily he focuses on what happens after the initial creation leads to business success.
Help Symfony Reach 3 Billion People
Internationalisation has been one of the pillars of the Symfony success since the very beginning. Besides providing tools to translate both the strings and the contents of your applications, Symfony itself is translated into a lot of different languages. The 72 strings used by the Validator component and the 16 strings used by the Security component are currently translated into 37 languages. Some of these translations are incomplete or haven't been updated for a long time. For that reason, they are organising a community initiative to improve the internationalisation of Symfony.
Tutorials and Talks
Guzzle - PHP HTTP Client
PHP comes with the native cURL client (if enabled), that can be frightening to the newcomer or hard to use to consume SOAP services. Other frameworks implement their versions of HTTP, REST and SOAP clients to some degree. However, if you do not wish to use cURL, you do not have a framework or you are not a fan of your framework's solution, Guzzle to the rescue. Guzzle is an independent HTTP client for PHP. Installing Guzzle is very easy, but you'll need to get composer first. Once you have composer installed and ready, create your basic composer.json file. Then add the Guzzle library to the composer.json file.
Finding Out Slowest Tests of Your PHPUnit Test Suite
Writing tests is a very important task in a developer's daily life. Delivering a new feature with green tests removes so much stress, letting the developer know he has not broken anything. That's why you should write tests for every single new piece of code you implement.
Zephir Language: Write PHP Extensions The Easy Way (Without C) – Part 1: Introduction
Zephir is basically a bridge that allows you to generate the C code used to compile PHP extensions from the much simpler Zephir code you write. It's an intermediate programming language, created by the people behind the Phalcon framework, easily learned by any PHP programmer. Padraig Brady takes a look at building PHP extensions the easy way.
Integrating Polymer/Dart and Symfony – Part 2
In his previous article, Taylor Ren implemented a Dart widget in a Symfony app. This advanced second part shows you how to handle the rest.
Web Performance Tricks - Beyond the Basics
There has been a lot of performance talk over the years at SitePoint, and they believe it’s time to revisit the topic with some more advanced aspects. The approaches mentioned in this article won’t be strictly PHP related, but you can be sure they’ll bring your application to a whole new level if used properly.
What is PHP-FIG and What Are They Doing?
There are a number of PHP frameworks available out there. You only have to search the internet to realise you could spend your entire lifetime learning how they all work, because every day there is a new framework that does things in new ways. PHP-FIG is the short name for the PHP Framework Interop Group and their mission is simple: to find a way to get the PHP frameworks to work together.
SOLID: Part 2 - The Open/Closed Principle
The Open/Closed Principle, OCP in short, is credited to Bertrand Mayer, a French programmer, who first published it in his book on Object-Oriented Software Construction in 1988. What we are basically talking about here is to design our modules, classes and functions in a way that when a new functionality is needed, we should not modify our existing code but rather write new code that will be used by existing code. This sounds a little bit strange, especially if we are working in languages like Java, C, C++ or C# where it applies not only to the source code itself but to the binary also. We want to create new features in ways that will not require us to redeploy existing binaries, executables or DLLs.
Design Patterns in PHP: Using Factories
The factory pattern is one of the most commonly used Design Patterns. It is useful when we need to choose between several interchangeable classes at runtime. By using factories we are also separating the creation of an object from the actual implementation. This article concentrates on the Factory Method, a variant of Design Pattern.
|News and Announcements
Phalcon 2.0 Alpha Landing
Last week a new milestone was reached by the Phalcon team, one that definitely warrants discussion. Way ahead of time, the Phalcon team announced the imminent release of Phalcon 2.0 alpha 1.
Drupal 7.26 and 6.30 Released
Drupal 7.26 and Drupal 6.30, maintenance releases which contain fixes for security vulnerabilities, are now available for download. See the Drupal 7.26 and Drupal 6.30 release notes for further information.
Aura.Cli 2.0.0-beta1 Released
The Aura.Cli package provides the command-line equivalents of web request and response objects. The Context (request-equivalent) object allows insight into the $_ENV, $_SERVER, and $argv values, along with a Getopt object that lets you build and then parse flags and options passed at the command line. The Stdio (response-equivalent) object provides access to the standard input/output/error streams.
Nomad PHP - European Chapter TONIGHT 20:00 CET
Paul Jones presents A Stitch In Time Saves 9; or, Solving the N+1 Problem. When dealing with databases, developers frequently run into the N+1 problem, in which they populate domain objects via queries in loops. This causes terrible performance drags. There is a solution in plain PHP that makes the number of queries constant to increase performance overall. This talk shows typical PHP code involving the N+1 problem, then shows how to solve the problem in plain PHP (that is, without a framework or ORM) and includes editorialising about the origins of the N+1 problem in the developer mindset.
Nomad PHP - US East Coast Chapter TONIGHT 20:00 CST (03:00 CET Jan 24th)
Chris Hartjes presents Understanding The Helter Skelter World of Testable PHP Applications. The world of testable PHP applications can seem confusing and the members of the community are often cult-like in their devotion to the tools and practices. What you need is a guide who is as crazy as the cultists but can explain the concepts to you without seeming like One Of Them. In this talk, long-time grumpy programmer and testing advocate Chris Hartjes goes over the basics of the concepts and tools that he uses every day to turn unruly PHP code into testable applications that seem like they are snapped together using lego blocks.
What Is An UnConference (uncon) & How Is It Different From A Conference?
7PHP interviews founder and co-leader of the PHP-BENELUX user-group, Michelangelo van Dam. They are keen to get his take on the "uncon", any he has organised and his inspiration for them.
Lately in PHP Podcast Episode #43 - Is Facebook HHVM Going To Replace Zend Engine in PHP 6?
The Facebook HipHop Virtual Machine, HHVM, has been evolving a lot, so PHP developers are considering it as a possible replacement for Zend Engine in PHP 6. This was one of the main topics discussed by Manuel Lemos and César Rodas in Episode 43 of the Lately in PHP podcast.
Voices of the ElePHPant Interview With Mark Brown
This week Cal Evans and the team chat to Mark Brown, a web developer working within the Windows Azure team at Microsoft. Discussing the Windows Azure product, Mark talks about, among other things, what it can do to make developers' lives easier.
What is Refactoring PHP Code?
Refactoring is the process of code refinement – taking messy code and reorganising it into much more manageable (cleaner) chunks. Refactoring is an incredibly important part of coding, that should be done whilst you are programming. Watch this video from Stefan Mischook at killerphp.com for more information.
If you have a position that needs filling, let us know and we will include it.
Kinesis Seeks Senior-Level PHP Talent! (Austin, Texas)
Kinesis is the established world leader for mobile survey software. We’re in the midst of refactoring our flagship product and reimagining our infrastructure as code using cutting edge tools and techniques. We’ve implemented distributed version control, continuous integration and inspection, and are aggressively re-architecting to support continuous delivery. We’re looking to add some experienced talent to our team to help us get there.
Single Founder seeking Senior PHP Talent
This one is a bit different! We decided to post it as Dan intrigued us. Single founder seeking either freelancers or employee number 1, with potential co-founder status. Read more on Dan's blog.
PHP Job in London with Signkick
Join a startup that is revolutionising the $33b outdoor advertising market.
Junior Developer for Performance Telecom, Newcastle Based.
Performance Telecom are looking for a Junior developer, based in Newcastle upon Tyne, to work on exciting big data and telecoms projects. This role would suit a recent graduate, though also someone who can drive and has access to their own transport. Contact firstname.lastname@example.org with your CV/Resume. This is NOT a remote position.
Developer at Sailthru (New York City)
We're searching for a talented developer who can take the challenge of scaling architectures and dive into leading technologies. You'll have the opportunity to work with a great team, in the heart of New York City and with great benefits such as working from home. Send your resume to Federico, email@example.com.
DeskPRO is hiring Full Stack PHP Developer (Symfony/AngularJS) in London or Remote.
Join our small London based team (excellent remote workers considered as well) building a large PHP application where your work will have immediate impact on our millions of end users. Lots of interesting projects coming up including adding elasticsearch and memached to our stack, writing a DeskPRO app for telephony based upon Twilio, integrating our software with other companies APIs, adding functionality to our phonegap mobile app as well as continuing the development of our core software platform.
PHP (Drupal) developers at Torchbox (Bristol and Oxford, UK)
Passionate about PHP, delirious about Drupal and want to work on a wide variety of challenging yet fun projects for fantastic clients? If yes, then Torchbox would love to hear from you! In return, we can offer an enviable working environment (country park or buzzing Bristol), a competitive salary, all the usual kit and sometimes even a ski trip.
Full Stack Developer
Major television production company seeks an experienced web developer to join its digital division. The ideal candidate possesses a deep expertise and abiding love of web development, an incredible track record of producing stellar web applications (with a long list of URLs & GitHub repositories to prove it), a near-supernatural work ethic and a fantastic sense of humour.
Machine Learning / AI skills (project based)
Inovica are looking for someone to work with them on detecting ecommerce products on sites and extracting relevant information. In the first instance please email firstname.lastname@example.org stating the experience you have in this field. They don't have a job description online but will reply to every email they receive.
Message Digital Design Ltd is Hiring a Web Developer (PHP)
We are looking for an experienced developer to work in our spacious offices in central Brighton, helping to deliver high-quality websites, e-commerce and online systems to a wide range of clients. At Message we give a damn about building the web the right way, and the successful applicant will too.
Ballers Bridge is Hiring a Sr. Yii Developer
We are looking for a motivated and outstanding candidate to lead our product development. The ideal candidate is an experienced problem solver, quick thinker/learner, self-motivated and not afraid of challenges.
PHP Engineers for Bright.Com in San Francisco
We are looking for PHP engineers to join our growing team! The ideal candidate is language agnostic, and can work with both scripting languages (such as Python and PHP) as well as strongly typed languages (such as C++ and Java), and has a passion for taking an idea and exploring, tinkering, debating, and demonstrating the fastest, most efficient, flexible and scalable implementation approaches. Experience working with traditional SQL databases as well as newer technologies, indexes and data stores is key (such as Solr, ElasticSearch, Redis, or Neo4j), and you must be comfortable using Linux and other open source technologies.
Senior PHP Developer in Bucharest, Romania
We are searching for a passionate PHP developer who will be part of a team of senior programmers and experienced testing engineers, directly involved in technical development projects, using Agile Scrum as methodology.
Freelance Dev Leads
A concierge service for your freelancing business. Whilst this is a paid service for developers Glen, who runs this site, provides good solid curated freelance jobs to his list. We have used it ourselves and recommend giving it a go.
Interesting Projects, Tools and Libraries
Beanstalk console/admin interface gets Auto-refresh, pauseTube, UI enhancements.
MyCryptoChat is a simple PHP encrypted chat rooms manager. Everything is encrypted on the client side, so noone can spy on what you say.
This is a pseudo-port of ASP.NET MVC 3ish to PHP.
Protobuf for PHP is an implementation of Google's Protocol Buffers for the PHP language, supporting its binary data serialisation and including a protoc plugin to generate PHP classes from .proto files.
Wrapper of the eBay Accelerator Toolkit PHP "Trading Edition".
Plankton is a PHP (pedagogical) pico framework.
This is a PHP port of the official LESS processor http://lesscss.org and should produce the same results as LESS 1.4.2.
PHP implementation of RNCryptor.
A PHP5 library that diffs (compares) HTML files.
PHP 5.3 library providing a Redis PHP mock for your tests.
AuthorityController 1.1 is a PHP authorisation library for Laravel 4.1 which restricts what resources a given user is allowed to access.
A simple PHP INI (or plain array) configuration class with dot-notation access.
Tiny PHP framework for open platforms.
Small and easy PHP library for sending messages to Twitter and receiving statuses.
A PHP collection library loosely inspired by the .NET runtime and the C++ STL.
Simple DataMapper ORM for PHP 5.3+.
So, how did you like this issue?