|It's the best day of the week again ;)
A packed edition this week, including the latest podcast from the recently established Elephant In The Room team. Listen to their "deep exploration of Value Objects".
We have the new book from Cal Evans, out last week and titled Signalling PHP: Catching Signals in PHP CLI Scripts. Why not use the most popular language on the web to create tools on the server?
With the announcement of the PHP UK Conference in London next February, it's time to get yourself those Early Bird tickets for two days of amazing talks, great socials and the most up to date information and training on PHP.
Have a great weekend PHP people.
A Peek At Aura v2 -- Aura.Web
Paul Jones writes - In the lessons learned post a few weeks ago, I wrote about how Aura was born of the idea that we could extract independent decoupled packages from Solar and how, in doing so, we discovered that some of those extracted packages themselves could be further split into independent pieces. The last example of this was how we extracted Aura.Dispatcher from three separate packages. Today, I’m going to talk about how the Aura.Web v2 package has been slimmed down as a result of Aura.Dispatcher being created. (Incidentally, Aura.Web v2 is also PHP 5.3 compatible!)
Is Ghost Really a WordPress Killer?
When you think about blogging platforms, WordPress is generally the obvious and popular choice. What started out as a clean framework for publishing to the web has now grown into a fully fledged CMS aimed at tackling entire websites. What about those people looking for a simple and effective way to write to the web without the overhead of a feature rich CMS? Enter Ghost, a barely one month old blogging platform hoping to meet those less complicated needs.
The Difference Between Class and Type
Whenever you instantiate an object in PHP, you automatically create an object with an implicit type. In fact, you can “type hint” on just about any object in PHP, whether it’s a concrete object, an interface or an abstract class. Yet in object oriented development, there is in fact a distinct difference between an object’s class and type. Brandon Savage explains.
Tutorials and Talks
Clustered File Systems and PHP
In part one, Introduction to Clustering in PHP, we explored the concepts of load balancing, PHP sessions and how to set up a rudimentary PHP cluster that allows for redundancy as well as load balancing. The final configuration was one load balancer exposing an NFS share for all of the client PHP servers to use for session storage. While effective, this still gives us a single point of failure (the load balancer). More load balancers can be added, but this sits us squarely back on our original problem: All of the sessions are on the first load balancer, not the second.
How to Use the Twilio API To Send an SMS Message
Businesses are taking advantage of the ubiquity of mobile devices and SMS. This tutorial describes how to send an SMS message to a phone with PHP. We will be using the Twilio API
, which provides numerous communications services. For example, with Twilio you can make and receive phone calls through the browser, mobile or desktop, send and receive SMS and MMS messages, or handle short codes.
Nginx Reverse Proxy with PHP-FPM and MySQL
Simple tutorial on how to configure two nginx servers using reverse proxy with php-fpm and mysql support and running them behind iptables firewall with other nginx security features. In this tutorial will use two separate servers “Dedi” (dedicated server) which will act as our private back-end server and “VPS” (virtual private server) which will act as our public front-end server. The purpose of this is to use small VPS that are seen to the public, yet use power of the dedicated server which is hidden.
Parsing CSV Files in PHP: Checking The File Type
Tom McFarlin writes - When it comes to parsing CSV files, the way you go about doing it is relatively the same (hence the need for the standard format, right?): 1.Read the file; 2.Break each line into an entry into a collection; 3.Iterate through the collection; 4.Create an object or element with attributes based on the data in the current given line. Sure, this is a high-level view of how it’s done and your specific implementation may have finer nuances, but – as I mentioned – I think its safe to say that the way we go about parsing a file is the same regardless of what we do with the data once we start reading it.
Social Network Style Posting with PHP, MongoDB and jQuery - Part 1
Post mechanisms similar to Facebook are nowadays very common within any application. The concept of Post-Like-Comment is familiar to everyone who ever used a social network. In this article, we will learn how to create a similar working model wherein the user will be able to post his status, like posts and comment on them. What’s more interesting is that after learning things from this article, going forward you will be able to implement a lot of other features on your own.
How to Run A Web Server from A PHP Application
Normally we deploy our PHP applications in a webserver (such as apache, nginx, …). Gonzalo Ayuso used to have one apache webserver on his personal computer to play with his applications, but from time to now he prefers to use PHP’s built-in webserver for experiments. It’s really simple.
Yii Routing, Active Record and Caching
Almost all modern web apps have 3 major concerns: Retrieving data from a database easily and effectively, caching the web content and URL rewriting to create user friendly URLs. Yii, like any other good framework, offers simple and easy solutions to all of the above. In his previous article Sandeep Panda covered the basics of building a simple CRUD app with Yii. In this tutorial he looks at how Yii greatly simplifies the development of database driven websites with its Active Record support. Additonally, Yii lets you further improve your websites by implementing user friendly URLs and powerful caching techniques.
PHP Performance Crash Course, Part 2: The Deep Dive
Dustin Whittle wrote Part 1 on this series back in May, when he covered some basic tips for optimising performance in PHP applications. In this post he dives a bit deeper into the principles and practical tips in scaling PHP.
Beyond Object Oriented Programming
In his previous post, Beyond Inheritance, Anthony Ferrara talked about looking past "types" and reasoning about objects differently. His conclusion was that inheritance wasn't necessary for OOP and often results in more problems than it solves. In this follow up he looks beyond that and explores more of what will come from treating objects as containers of behaviour. Let's look at what this means for various kinds of classes.
Money Pattern: The Right Way to Represent Value-Unit Pairs
The Money Pattern, defined by Martin Fowler and published in Patterns of Enterprise Application Architecture, is a great way to represent value-unit pairs. It is called Money Pattern because it emerged in a financial context and we will illustrate its use mainly in this context using PHP.
Create Your Own Picture Processor in PHP
Using just a web server and the PHP scripting language, it’s easy to build a simple image editor with many of the features of top photo editing packages.
|News and Announcements
Nomad PHP European Chapter - November 14th 20:00 CET
It's not too late! Today Davey Shafik presents Introduction to Databases. This talk will cover the basics necessary to help you decide what data to store, where and how. We will cover PDO — PHP’s Data Object extension, which allows you to talk to a variety of databases, including MySQL. You will learn how to CRUD — Create, Retrieve, Update and Delete data, database schema and when to use indexes. Additionally, we will look at other data storage systems such as memcache and nosql databases.
Nomad PHP US Chapter - November 14th 20:00 CST
Ed Finkler presents More Code, More Problems. In this talk I’ll extend the concepts to other languages we work with in web development, establishing these core principles: Learn languages, not frameworks, Build small things, less code is better than more, Create and use simple, readable code. We’ll cover how following these principles makes you a better developer and makes the job of maintaining and verifying your code much easier.
PHP Conference Brazil November 28th-December 1st 2013, Sao Paulo
Celebrating it's 8th year and with over 4500 participants, PHP Conference Brazil 2013 takes place at the end of the month. The itinerary consists of a day of hands-on courses, followed by several tracks chosen by a poll of the audience.
PHP UK Conference February 21-22nd 2014, London
PHP London are pleased to announce our 9th Annual PHP UK Conference. With two days of amazing talks, great socials and the most up to date information and training on PHP. We're proud to be a community organised event. Get your Early Bird tickets now.
Joomla! 2.5.16 Released
The Joomla Project is pleased to announce the immediate availability of Joomla 2.5.16. 2.5.16 addresses three critical issues reported after the release of 2.5.15 last week.
Elephant in the Room PHP Podcast - Episode #2 The Heart and Soul of OOP
Join Konstantin and Mathias in a deep exploration of Value Objects. This time we’re keeping it very focused on one subject — and we both learned some new ideas from each other in the process! We feel it’s our best episode yet ;–)
High Performance Drupal: Fast and Scalable Designs (by Jeff Sheltren, Narayan Newton and Nathaniel Catchpole, published 4th November 2013)
How can you help your Drupal website continue to perform at the highest level as it grows to meet demand? This comprehensive guide provides best practices, examples and in-depth explanations for solving several performance and scalability issues. You’ll learn how to apply coding and infrastructure techniques to Drupal internals, application performance, databases, web servers and performance analysis.
Laravel Application Development Cookbook (by Terry Matula, published 25th October 2013)
When creating a web application, there are many PHP frameworks from which to choose. Some are very easy to set up and some have a much steeper learning curve. Laravel offers both paths. You can do a quick installation and have your app up-and-running in no time, or you can use Laravel’s extensibility to create an advanced and fully-featured app. Laravel Application Development Cookbook provides you with working code examples for many of the common problems that web developers face. In the process, it will also allow both new and existing Laravel users to expand their knowledge of the framework.
Signalling PHP: Catching Signals in PHP CLI Scripts (by Cal Evans, published 5th November 2013)
While PHP was built for the web, it has grown into a tool that can do so much more. "Signalling PHP" is your gateway into understanding how PHP interacts with operating systems. Why not use the most popular language on the web to create tools on the server?
Zend Framework 2 Application Development (by Christopher Valles, published 25th October 2013)
Zend Framework 2 has a flexible architecture that lets us build modern web applications and web services easily. It also provides an easy-to-use, high quality component library that is designed to be used the way you want. Zend Framework 2 Application Development is a hands-on guide to building your application.
If you have a position that needs filling, let us know and we will include it.
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 protected].
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 [email protected] 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.
Performance Telecom (UK) seek freelancer (Remote worker) - Python and PHP Developer
This position is primarily Python, but PHP skills are also required.
Interesting Projects, Tools and Libraries
An enumeration implementation for PHP. In terms of software development, an enumeration (or "enumerated type") is essentially a fixed set of values. These values are called "members" or "elements". An enumeration is used in circumstances where it is desirable to allow an argument to be only one of a particular set of values and where anything else is considered invalid.
Vatsimphp collects and parses the publically available statistics from the VATSIM.net network. It provides iterators for the available data and basic search/filtering capabilities without using a database backend.
A simple WebSocket WAMP client implemented in php, this library uses php 5.3+.
A lightweight PHP annotation library. Minime\Annotations is a very simple PHP library that lets you create APIs that react to metadata with great flexibility and no headache.
This is a library package that includes the PHP Markdown Next parser, which is based on PHP Markdown Extra and PHP Markdown Extra Extended parsers.
Fully tested minimalistic PHP template engine. Include the class, set your templates location and start rendering.
Simple PHP library to provide some CRUD functions (Create, Read, Update, Delete) in MySql databases. For php 5.4, tested only with mySql with InnoDB
This PHP client allows REST-based access to documents on the server. The ArangoDocumentHandler class should be used for these purposes. There is an example for REST-based documents access in the file examples/document.php.
The Iniscan is a tool designed to scan the given php.ini file for common security practices and report back results. Currently it is only for use on the command line and reports the results back to the display for both Pass and Fail on each test.
A Petrinet PHP framework. Petrinet is a framework allowing you to create, visualise and execute Petrinets.
Scurvy is a PHP templating engine with a focus on simplicity. There are too many templating engines available which are bloated and/or syntax heavy; Scurvy was created for those who want a simple solution.
PHP client for EasyPost API v2. EasyPost is a simple shipping API.
Stripe PHP bindings. A set of unified APIs and tools that instantly enable businesses to accept and manage online payments.
So, how did you like this issue?