|Welcome to this week's edition of phpweekly.
Two more announcements from the PHP development team this week see the immediate release of PHP 5.5.5 and PHP 5.4.21.
Nomad PHP announces its guest speakers for the November presentations, in Europe and the states.
We hear from Michael Wallner of SmugMug, giving advice to budding PHP developers, drawing on his 10+ years experience of PHP.
We also have the latest podcast from PHP Town Hall, discussing the difference between PHP’s organisational structure and lack of BDFL with that of Rails, or Linux, plus a little about service-orientated architecture.
Got an opinion? We'd love to hear it so drop me an email.
Talk PHP With The Experts: The Transcript
Sarah Hawk writes - Talk with the Experts this morning was a busy one, with close to a record number of attendees. Hardly surprising really, considering that the subject was PHP. Luckily for me, the experts were our very own developers Jude Aakjaer and Michael Sauter and they were super quick off the mark. I didn’t even have to queue the questions. Too easy. The thing that excited me the most about the chat was that we finally got to use the code window that I commissioned months ago and it was a huge success. If you read through the transcript below, you’ll see the code saved to Gists throughout the dialogue.
php[architect] Returning to Print
“Are you going to bring the magazine back to print?” It’s the #1 question on everyone’s minds. Since musketeers.me first acquired php[architect] at the beginning of 2013, it is the one question that we have constantly been asked. While digital publishing is the future, people still love the feeling of having a printed magazine in hand. Knowing that our customers wanted it, we’ve worked hard to figure out a way that we could bring the magazine back to print again. We are extremely excited today to announce that starting with the November 2013 issue, php[architect] will once again be printed!
Ever Wondered How ConFoo Creates The Perfect Timetable?
Anna Filina writes - Nobody notices the effort that is put into scheduling so many ConFoo talks. Everyone notices that the conference runs smoothly, is a lot of fun to attend and everyone learns heaps. That is certainly no accident. Let me give you a peek into the scheduling process. Use this timetable as a reference when you read the rest of the article.
The Value of Design Patterns
Brandon Savage has a new post talking about the value of design patterns with his response to another post. He tries to put the emphasis back on making good OOP code instead of worrying too much about the actual design pattern. He relates design patterns to the sentence structures you learn when learning a new (spoken) language. He suggests that, while they're a good way for developers to communicate, they shouldn't be the only emphasis. When a developer becomes more fluent in a language, the patterns should become less important but are still a good structure for good development practices.
PHP Extension Writing
Mikko Koppanen has written up a quick post sharing some work he's done to help make writing extension in PHP a little bit easier. He's created a new project that shares some of his experience in extension development.
Please Stop Pretending PHP is a Good Language
In Volker Dusch's latest post he makes a suggestion to the PHP community as a whole - stop pretending PHP is a good language and admit its flaws where it has them. He gets into some of the "it's not okay when..." kinds of things that PHP allows and also suggests a few things that you can do to help the situation, including not sending angry emails to the internal mailing list and contribute back with something useful instead (like RFCs).
Tutorials and Talks
How To Setup Your Own PHP PEAR Environment
In this article, we will show you how to setup your own PEAR Environment for PHP, assuming you have a basic knowledge of SSH and how to log into SSH.
Building a Web App With Symfony 2 Development
Taylor Ren has posted the next in his "Building an Application with Symfony2" series. In this new post he moves past the initial setup and into some actual development. He shows you how to set up some sample routes (the example application shows information about books) and starts with the "home" route to make the first controller. He uses Doctrine to manage the database entities/repositories and includes the code to create them. Finally Ren makes the views and templates for this first route and shows the end result.
How to install MongoDB PHP extension
On the How To tutorials website - In our last tutorials I’ve showed you how to install MongoDB server directly on a linux Debian or Centos. The process is simple and you just need about 10 minutes or so for the average beginner to start working from shell with MongoDB. But what comes next is using a programming language like PHP to connect directly from a website to our noSQL database server. In this tutorial I will go through the steps you need to run to install MongoDB PHP extension on debian / Ubuntu operating system.
Install PHP 5.3 Mysql 5.5 Apache on Debian
On the How To tutorial website - The other day I had a friend who just ordered a new bare VPS server and wanted to install phpmyadmin on it and run some php scripts and storing into a mysql database. He was running an OpenVZ Debian installation and I thought that it would be a nice tutorial for other users trying to install PHP 5.3 Mysql 5.5 Apache on Debian. So here it is, I’ll go with a step by step with what you would need to use to get everything installed.
Step by Step Guide How to Configure Server for PHP / Symfony Project
If you're looking into using Symfony2 for your application and want to be sure your environment is set up correctly, you should definitely check out this new post from Konrad Podgórski. It's a very detailed guide to getting the full environment set up, also including setup of NodeJS and Capifony for deployment.
A Peek At Aura v2 -- Aura.Sql and ExtendedPdo
On the Aura blog Paul Jones has posted a look ahead for the framework, looking specifically at what's coming in version 2 for the Aura.Sql and ExtendedPdo functionality. He gives the example of Aura.Sql compared to the Solar_Sql (from the Solar framework) and how certain things that they thought needed to be coupled actually didn't. In version 2 of the Aura.Sql component they're taking this same approach and abstracting out things that don't actually need to be in the base class. This breaks it up into three packages - Aura.Sql-v2, Aura.Sql_Query and Aura.Sql_Schema. He gets into more detail in the rest of the post as to what the new Aura.Sql (v2) will still handle.
Injecting Repositories to Service in Symfony2
Wojciech Sznapka has an interesting post on his site talking about injecting repositories into services in Symfony2-based applications. By injecting just a single repository instead of the entire EntityManager, you get a cleaner, more clear interface defined in the code. He includes some code to illustrate his point - both a "services.xml" configuration of the related dependency injection container and a custom entity repository (defined in the config). He then shows how this repository (FooRepository) would be injected into the service (FooService) via constructor injection.
Active Record vs Data Mapper for Persistence
Russell Walker has written a post comparing two popular methods for abstracting out database access and working with your data - the Active Record and Data Mapper patterns for data persistence. He gives simple code examples of both - one showing a basic "save" call with Active Record and the other showing the saving of a "Foo" entity using similar logic. Along with these examples he includes a few points about the major advantages and disadvantages related to the pattern. He also talks some about "service objects", the go-between that the data mapper pattern uses to combine business logic and the mapper object. He ends the post by making some suggestions about which to use, depending on the need of course.
Laravel 4 and NodeJs/Redis pub/sub Realtime Notifications
On VilkomenJuist.nl there's a recent post showing you how to create a real-time notification system with PHP using Laravel, NodeJs and Redis. The post has all of the code and configuration you'll need to reproduce the setup. This includes the Laravel Redis config, code for the event handler and the Node server listening for the socket connection.
Running Symfony Standard Edition on HHVM
On the Qandidate.com blog they have a post (the second in a series, actually) about getting a Symfony application running on HHVM, the virtual machine version of the HipHop engine originally developed by Facebook. In this second post they show how to install and configure Symfony in a newly installed HHVM instance.
Playing with parse.com API
Selling Downloads with Stripe and Laravel
Digital goods are an increasingly valuable commodity. Whether you're a designer selling templates or font files, a developer charging for packages of code or a musician selling MP3s, selling digital goods online is often far easier than physical goods – with much lower production costs and no delivery charges. In this article, Lukas White shows how you can implement a simple store selling digital goods using PHP along with Stripe, a payment provider who aims to make it easier than ever to take online payments since you don't need to set up special merchant accounts or deal with complex payment gateways.
Install LAMP Server (Apache, MySQL or MariaDB, PHP) On Ubuntu 13.10 Server
LAMP is a combination of operating system and open-source software stack. The acronym LAMP is derived from the first letters of Linux, Apache HTTP Server, MySQL database and PHP, Perl or Python. We already have shown you how to install LAMP on many platforms. In this tutorial, let us install a LAMP server on Ubuntu 13.10 Server edition. My testbox hostname and IP address are server.unixmen.com and 192.168.1.101/24, respectively.
How To Use Memcached with PHP
This follows on from an earlier post explaining how you can install the memcached server and also how to get the php extension installed, but never actually showing you how you can use it. There are a number of cases where you would use this, be it to cache mysql queries, login sessions or any type of data that could repeat themselves over and over. Using memcached server to cache such data will drastically improve performance and speed your website by at least by 50%.
|News and Announcements
PHP 5.5.5 Has Been Released
The PHP development team announces the immediate availability of PHP 5.5.5. This release fixes about twenty bugs against PHP 5.5.4, some of them regarding the build system. All PHP users are encouraged to upgrade to this new version.
PHP 5.4.21 Released
The PHP development team announces the immediate availability of PHP 5.4.21. About 10 bugs were fixed. All PHP 5.4 users are encouraged to upgrade to this version.
Nomad PHP European Chapter - November 14th 2013
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 2013
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.
WordPress 3.7 Release Candidate 2
The second release candidate of WordPress 3.7 is now available for testing. Those of you already testing WordPress 3.7 will be updated automatically to RC2.
PHP Town Hall - Episode #13: PHP Internals, Service-orientated Architecture and Language Wars
Ben, Zack K. and Phil discuss the difference between PHP’s organisational structure and lack of BDFL with that of Rails, or Linux. They then discuss service-orientated architecture a little and move onto how you should not box yourself into a single programming language - on your CV or in general as a programmer.
PHP Interview with Michael Wallner, a Full Time Core PHP Developer
On 7PHP.com another community interview has been posted - this time it's with Michael Wallner, a full-time PHP core developer working at SmugMug. He answers questions about his past, how he started with PHP and what he thinks of the language now versus when he started out with it. He gives some advice to budding PHP developers and some of the libraries/projects he suggests. They then talk some about his work at SmugMug and how much time he'll be spending dedicated to working on the PHP core.
PHP: Little Book of Functions (by James Steinberg, published 21st October 2013)
This book provides an easy look up for the functions provided by PHP 5, together with their syntax and an example of usage.
SAP Developers Guide to PHP (by Craig Cmehil, published 20th October 2013)
With growing interest in the development of low cost development solutions in a corporate environment, PHP is becoming more and more popular. However, the biggest problem for most SAP developers is the need for quick information to help them hit the ground running. This book provides readers with a comprehensive assessment of what is really needed to work with PHP, as well as how the SAP and PHP systems work together. After a short introduction to PHP and its capability characteristics, the SAPRFC extension module for PHP 4 and PHP 5 is explained in detail. Working with a sample application, you will learn how the two systems communicate with one another and how best to use PHP for your own SAP-related development projects.
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@example.com.
Senior Software Engineer (PHP) London
The lead engineer will possess entrepreneurial drive and hold a track record of significant engineering achievement and demonstrated ability to achieve goals in an innovative and fast paced environment. They will write and deliver code that meets all specifications, have mastered design patterns and are able to codify and apply best practices to work produced. They will be a recognised leader who effectively trains and mentors junior employees.
Software Engineer (PHP) London
This role involves working in an agile software engineering team across a number of products including transactional web-sites and a high capacity, high availability, content management system that supports global online activities. Combining strong technical analytical skills, domain and product knowledge with effective planning, they will participate in the development of key backend business logic components of web applications that drive online web properties
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 Engineers for Runtriz.com in Hollywood, CA
We are looking for an experienced web developer to work on a small, productive team. Team members should be able to work full-time with a high level of focus and dedication. It's important that team members have a problem-solving attitude and can work through issues without needing a lot of help or guidance. We're looking for people who are always striving to learn new technologies and enjoy spending free time experimenting with and learning new development techniques and languages. If you feel like this describes you please click on the link for more info.
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.
looking for a proactive developer, a natural problem solver, who will enjoy working with our not-for-profit clients, and be an integral part of our team.
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.
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
Requests For PHP
Requests is a stable PHP library that uses cURL or fsockopen (depending on the availability) and provides a consistent API. It simplifies sending requests, accepts HEAD, GET, POST, PUT, DELETE or PATCH and adding headers, form data + multipart files. The library also works with international domain names, authentication, auto-decompressing gzipped responses and much more. To sum up, Requests is a must-bookmark for easy-to-use and hosting-friendly HTTP requests.
Munee is an all-in-one library that handles many things related to optimisation and manipulation of website assets. The library has a powerful caching feature that can cache resources in both server and client-side. It integrates well with the PHP image manipulation library: Imagine for resizing or cropping images (and caching them afterwards). Munee can automatically compile LESS, SCSS and CoffeeScript and it can combine CSS + JS files into a single request. Also, these CSS-JS files can be minified for a better performance. This PHP library integrates to any code easily with less effort and it can be used with or without .htaccess (good for Windows users).
Swift Mailer is a feature-rich PHP mailer library for sending e-mails from PHP websites and applications. It does not rely on PHP’s native mail() class which consumes high resources. Instead, Swift communicates directly with an SMTP server or a MTA binary to send mail quickly and efficiently. Swift supports event-driven plugins which offer you the opportunity to really take control of the library and set this mailer apart from everything else that’s out there.
PHP Image Cache
Image Cache is a lightweight PHP class that compresses, moves and caches the image in the user’s browser. After that, it returns the new source of the image to be printed in an image tag which results in a serious gain on load time. The class works by simply setting options like the directory, the base URL, etc. and calling a compress function for each image.
CLImax is a PHP cli framework, making it very easy for you to build CLI programs in PHP. Custom apps for managing your project and general-purpose CLI apps written in PHP.
Google Visualisation PHP
This PHP library allows you to implement Google Visualisation DataSource queries in PHP. Use PHP endpoints in Apache or Nginx as a DataSource for Google Charts.
This library provides an API to track events and update profiles on Mixpanel. By default, events are written using ssl over a persistent socket connection. You can contribute your own persistence implementation by creating a Consumer.
Test Tools for PHP
The test tools library provides the following components: A basic FileFixture class to read and write serialised data from/to the file system, SelfInitialisingFixtureTrait to add fixture support to almost any database or service client (record and playback), ready-to-use self initialising fixture class for Doctrine DBAL (version >= 2.3), UnitTestCase with integrated dependency injection container based on Symfony Components and PHPUnit, WebTestCase and CommandTestCase for functional testing of Symfony applications.
Dabble is a lightweight wrapper and collection of helpers for MySQLi. The prefered way to install Dabble is through composer. PHP 5.3 or newer with the mysqli extension enabled is required. Dabble is developed and tested against MySQL 5.1+.
Propel is an open-source Object-Relational Mapping (ORM) for PHP5. A fast and easy way to manage your database, it provides command line tools for generating code (well documented with an IDE-friendly syntax). Using PDO (PHP Data Objects) Propel allows you to use the RDBMS you want (MySQL, SQLite, PostgreSQL, Oracle and MSSQL are supported).
PHP Markdown Extended
A complete PHP 5.3 package of Markdown syntax parser (extended version). PHP Markdown Extended is a PHP class to transform Markdown text files or strings in HTML. This new version of a Markdown parser tries to propose a complete set of Markdown syntax tags and rules and to be PHP 5.3 compliant.
A PHP collection library loosely inspired by the .NET runtime and the C++ STL. PHP has long been lacking formal, performant collection types. The addition of the heap-centric collections to the SPL has gone some way to addressing this problem but has fallen short in some regards.
MindaPHP aims to be a full-stack framework that is easy to learn, secure by design and light-weight. By design, it does have one variable scope for all layers, require you to write SQL queries (no ORM) and use PHP as a templating language. This is mainly to make it easy to learn for PHP developers.
So, how did you like this issue?