Subscribe! Enter your email address below:

NO SPAM: We absolutely hate spam. We will not share, rent, or give away your email address to anyone.You can unsubscribe at any time. Easily!

August 3, 2017

Welcome to the latest edition of your favourite PHP newsletter.

After the smooth release of WordPress 4.8 in June, the Core team was able to build up some of the community infrastructure around development. Read on for more interesting news from around the WordPress world in July.

Also this week, with Drupalcon taking place next month, the question has been raised - why can't the Drupal Association invite PHP speakers to Drupalcon? 

Laravel Horizon software has finally arrived, to supercharge your queues with a beautiful dashboard and code-driven configuration.

Plus, with the recent release of the first PHP 7.2 Beta, some initial benchmarks have been run. Found out the outcome here.

And finally, the latest Full Stack Radio podcast touches on building a Laravel app using Turbolinks, and how Turbolinks compares to other popular tools, such as Ionic.

Have a great weekend folks,

Katie and Ade

Please help us by clicking to our sponsor:

encrypt php scriptsProtect your PHP Code

Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.


Why No Mainstream PHP Speakers Come to Drupalcon - and How We're Changing That
I’ve learned something incredible as the PHP Track Chair for Drupalcon Vienna. The Drupal Association has no way to invite PHP speakers to Drupalcon. This blew me away when I first learned about it. After all the work to bring mainstream PHP to Drupal core, after all the outreach to PHP-FIG, after all the talks Drupalists have given at major PHP conferences, how is this possible?

The CFP Process for SymfonyCon and SymfonyLive Events
All the Symfony conferences we organise are aimed at gathering the Symfony community together to enable every community member to meet each other, share best practices and learn tips and about new features. This all happens in a convivial atmosphere that feels like a big family reunion. The highlight, of course, is listening to high quality talks. The speaker line up is very important to us and we take great care to make sure the talks we select will be appreciated and useful for the majority of conference attendees.

Ponderings on Odoriferous Syntactical Constructifications
(AKA: "Thoughts on code smells" and how "high brow" they have become). We have a habit of talking about "code smells" to indicate patterns and practices that our experience has shown can be problematic. Many of these "smells" are backed by a lot of data and really are legitimate problems to avoid. These are constructs and tools that often have few legitimate uses. But many so called "smells" really aren't significantly bad. Let's dive into some of the nuance here and talk a bit about why our word choice matters.

Conferences: for Fun or Profit?
Attending an IT conference is fun. You get to meet people, listen to interesting presentations, maybe even participate in a workshop where you can expand your skills. Furthermore, there is free food, evening activities including parties, and networking. At the very least, it is a break from doing time in the office. Each tech community, including PHP, has some well-known speakers that frequently present at conferences around the world. Admittedly, we are among them. How cool must it be to get all this excitement of a conference, and even get paid to do it? Wait a moment. Nobody said that conference speakers get paid to do their job. And in fact, they are not. PHP, both the language as well as the community around it, have a strong history of being a bit "special". This also holds true for PHP conferences.

The Month in WordPress: July 2017
After a particularly busy month in June, things settled down a bit in the WordPress world — WordPress 4.8’s release went very smoothly, allowing the Core team to build up some of the community infrastructure around development. Read on for more interesting news from around the WordPress world in July.

Layers, Ports & Adapters - Part 1, Foreword
Looking back at my old blog posts, I think it's good to write down a more balanced view on application architecture than the one that speaks from some of the older posts from 2013 and 2014. Before I do, I allow myself a quick self-centered trip down memory lane.

Tutorials and Talks

Customising Sculpin: Highlight Image and Facebook
Over the past months I've been slowly customising my Sculpin installation for this blog to fit my own liking a bit more. I've added a bit more styling including a beautiful background image and a transparent white background for the content column. Today I wanted to add a bit more. Two things specifically: I wanted to control a bit more about how my blogposts are displayed when they are shared on Facebook. I wanted to have an optional image at the top of blogposts to make them look a bit better. It turns out this was actually quite easy, so here's a short description of what I did to make it work.

How to Build a Class Booking System with Acuity Scheduling
I recently wrote an article about building an online class booking system to book lessons with a driving instructor. Most other types of class, though, tend to have multiple participants. Cookery classes usually have a very well-defined limit on the number of students — you can only really teach as many people as you have cooking stations or cookers. That’s going to be the theme of this article — managing those “slots” in a cookery class. The principles remain the same for all sorts of other forms of tuition.

Handling Incoming Webhooks in PHP
An increasing number of applications now offer webhooks as an integration, often in addition to an API. The classic example, familiar to most developers, is the GitHub webhooks which can notify your other systems such as CI tooling that a new commit has been added to a branch. If you imagine how many repositories exist on GitHub, and how many other systems react to changes on each repository ... there's a reason they are excellent with webhooks! Whether it's your source control, updates from your IoT sensors, or an event coming from another component in your application, I have some Opinions (TM) about handling webhooks, so I thought I'd write them down and include some code as well, since I think this is an area that many applications will need to work with.

Using Docker Build Args to Customise The Build
I wasn't really happy with the current approaches of dealing with different Dockerfiles and docker-compose.yaml files for development and production containers. I don't really see the point of managing multiple configuration files, building a few intermediate containers when the only difference between a development image and a production image is that the code is copied into the image during build. Adding files on every build is also not an ideal solution as you could potentially ship an old version of the application when you miss running a docker build after you made your final changes.

Laravel Notification System On Slack And Email
In this article, I will highlight another amazing feature of Laravel through a very basic Laravel notification system. Using this system, I will send a notification to the user by sending them an email and integrate Slack to setup the system for sending notifications on a Slack channel.

Support For .env Files
A common practice in project development is to store some configuration options as environment variables. In development, testing, qa mode, using a .env file (pronounced "dot-env") is common instead of using "real" environment variables.

Node.js: How To Mock The Imports of An ES6 module
The package mock-require is useful if you want to mock require statements in Node.js. It has a simple API that allows you to mock anything, from a single exported function to a standard library.

Improve WordPress Development Workflow Using Sublime Text Editor and GitHub Repo On A Live Website
Considering the rapid growth of web developers and open source communities, a lot of work has been done to make development process faster, easier, and accessible around the globe. With the launch of different Git environments like GitHub and BitBucket, the development process has become a lot easier. Although it’s hard to maintain the version controlling via Git, it is a three step process to set up a development environment. Develop locally, push to Git and then deploy it on a live site. In this article, I will let you know how to integrate Sublime Text with GitHub via GitHub tools for Sublime Text and then push them on a live site at Cloudways.

Twig – the Most Popular Stand-Alone PHP Template Engine
Twig is a template engine for PHP. But isn’t PHP itself a template engine? Yes and no! PHP is a verbose language, and that verbosity is amplified when trying to output HTML content. Modern template systems will take away some of that verbosity and still add a fair share of functionality on top. Things like security and debug features are mainstays in modern template engines. Today, we’re focusing on Twig.

And Another Phing...
Additional things learnt from developing the Mercurial tasks for phing, the PHP build system based on Javas Ant tool.

How to Use Xdebug for Advanced PHP Debugging
You could just debug your PHP code using functions such as error_log, print, and var_dump, (and to be honest we’ve all done it, a lot!), but sometimes they just aren’t enough, and can actually slow you down while developing. There must be a better way, surely?! Enter Xdebug, the rather awesome debugging and profiling tool for PHP. In this post, I’ll take you through why Xdebug is amazing, getting it setup, how to use it, get the most out of it it, and some neat advanced uses all to make your life easier.

Automating GitLab
When we made the move to GitLab 1,5 years ago, it was clear to me that we would need some automation to simplify the creation of groups and projects and to sync the LDAP group memberships to the matching GitLab groups. I did a quick search on Packagist for GitLab client libraries and found the m4tthumphrey/php-gitlab-api package.
News and Announcements

Introducing Laravel Horizon
The moment everyone in the Laravel community has been waiting for has finally arrived! Laravel Horizon is software to “supercharge your queues with a beautiful dashboard and code-driven configuration”.

Northeast PHP/UX Conference - August 9-11th 2017, Charlottetown, PEI Canada
Now in its 5th year, the Northeast PHP Conference is a web developer conference focused on PHP, Web Technology, and UX, taking place next week. Whilst grounded in PHP, the Northeast PHP Conference is not just about PHP. As the organisers know, most PHP developers are working on websites and applications, which means that they need more than just PHP skills to get ahead. The User Experience and Web Technology talks will help these developers broaden their skill sets and expand their knowledge & experience. The last few tickets are on sale now.

Drupal Con - 26-29th September 2017, Vienna
DrupalCon is an international event that brings together the people who use, develop, design and support the Drupal Platform. Tickets are on sale now.

Forum PHP - 26-27th October 2017, Paris
The AFPP, French Users Association of PHP, presents the Forum PHP 2017, the largest annual French-speaking event for all PHP, professional and open-source communities, dedicated to the language and its ecosystem. Tickets are on sale now.

ZendCon - October 23rd-26th 2017, Las Vegas
Now in its 13th year, ZendCon is the "must attend" event and the largest gathering of the PHP and open source communities. ZendCon brings together industry thought leaders, recognised PHP experts, enterprise decision makers, IT managers, dev and ops teams, and independent developers for four days of professional and business development. ZendCon connects the vast open source ecosystem and provides unique opportunities to engage with prominent speakers, community leaders, and vendors. You'll learn about the latest innovations and network with peers to get educated, advance your coding practices, and solve business challenges. Early Bird tickets are on sale now.


Changelog Podcast #258: 10 Years of RabbitMQ
We are thrilled to produce this show to honour RabbitMQs 10th anniversary. Karl Nilsson and Michael Klishin joined the show to talk through 10 years of RabbitMQ — one of the most widely deployed open source message brokers with more than 35,000 production deployments worldwide.

MageTalk Magento Podcast #138 - “Kalen Zero-to-Sixty-in-the-Podcast Jordan”
The guys rap about exclusivity, Magento 2 usage, Shopifys shady lies, Twitter bubbles and more.

Zend Framework Quick Bites Episode 34 - How to Create a Zend Expressive Module
In this episode, we’re discussing the latest tutorial on Master Zend Framework that shows how to create a basic module in Zend Expressive. If you’ve never created a module before, or if you’re keen to get started, then this is the episode for you.

PHP Ugly Podcast #66: Execute Order 66
Topics include Uber adds tipping and how hackers can steal your 2FA email account.

PHP and JavaScript Innovation Award Report July 2017 Edition - April 2017 Nominees
This is the July edition of the Innovation Award podcast hangout, recorded by Manuel Lemos and Arturs Sosins to comment on the outstanding features of all the past month nominees and winners PHP and JavaScript packages, and the prizes that the authors earned, starting with the nominees from the month of April 2017.

The Laracasts Snippets Episode 67: The Irony Is That I Will Tweet About This Episode
I've been noticing lately that I feel mentally drained at the end of most days. But strangely enough, it's not the code I write that causes this. No, instead it's the day-to-day social media interaction that drains me. Why again are we participating in platforms that actively encourage addiction and negativity? And why are we okay with checking our phones a hundred times a day?

Full Stack Radio Podcast Episode 69: Hybrid Mobile Apps with Turbolinks and Laravel
In this episode, Adam talks to Jonathan Reinink about what it's like to build a Laravel application using Turbolinks, how it plays with front-end frameworks like Vue.js, and how it's helping him quickly develop web, iOS, and Android apps for his SaaS business all by himself. They also discuss the benefits of using a Turbolinks-style approach for small teams, and how Turbolinks on mobile compares to other popular tools like Ionic.

Reading and Viewing

All About .phpt Files
This is the 3rd post in the "Writing tests for PHP source" series by Sammy Kaye Powers, all about .phpt files. Now that we know how to run the test suite with run-tests, let's create our first .phpt file.

7PHP Interview - What Tools Does The PHPrince Of Persia Use In His Daily Adventures?! 
This is the 3rd edition in a series of “It’s The Tools Talking”. Something which I kick started right on the 1st of Jan to start off the year 2016. I am continuing with it, breaking my 1yr hiatus as I announced last week. For this episode #3, I’m honoured and much delighted to host The PHPrince of Persia a.k.a Michael Bodnarchuk (also known as @Davert online).

Benchmarks Of PHP 7.2 Beta: PHP Is Still Getting Faster
PHP 7.2 Beta 1 was released yesterday as the next step towards this next refinement to PHP7 that is expected to be officially released in November. I couldn't help but to run some initial benchmarks.

PHP 7 Data Structures and Algorithms Complete Self-Assessment Guide (by Gerardus Blokdyk, published 25th July 2017)
What role does communication play in the success or failure of a PHP 7 Data Structures and Algorithms project? This book is for managers, advisors, consultants, specialists, professionals and anyone interested in PHP 7 Data Structures and Algorithms assessment.

WordPress Plugin Development Cookbook - Second Edition Kindle Edition (by Yannick Lefebvre, published 26th July 2017)
WordPress is a popular, powerful, and open Content Management System. Learning how to extend its capabilities allows you to unleash its full potential, whether you're an administrator trying to find the right extension, a developer with a great idea to enhance the platform for the community, or a website developer working to fulfill a clients needs. This book shows readers how to navigate the WordPress vast set of API functions to create high-quality plugins with easy-to-configure administration interfaces.


Mid-Level & Senior PHP Developers, DealerScience (Boston, MA)
Established Boston, MA startup seeking mid/senior LAMP developers excited to apply modern programming to our SaaS solution! Local preferred. Email: [email protected].

Do you have a position that you would like to fill? PHP Weekly is ideal for targeting developers and the cost is only $50/week for an advert.  Please let me know if you are interested by emailing me at [email protected]

Interesting Projects, Tools and Libraries

Debugger integrated with PhpStorm. ErrorDumper allows you to catch all kinds of errors and exceptions in PHP. You will be able to serialise, restore and display them later in readable form.

Lightweight language that compiles to PHP.

Visualisation layer and data store for SpeedTracker.

A WordPress specific set of extensions for Codeception.

PHP library to deal with currencies handling & representation.

Composer package to enable a controller when using Blade with Sage 9.

Domain-Driven Design in a PHP project using Symfony, this repository contains the implementation in DDD with PHP and Symfony with doctrine of a simple Wallet API.

PHP web app for planning poker, it includes a master view for the ScrumMaster and a simple responsive card view for the team.

A self-hosted open source application for managing your invoices, clients and payments.

The CLI is the official command-line interface for Use this tool to interact with your projects, and to build them locally for development purposes.

Open-source software for volunteer computing and grid computing.

Better Reflection is a reflection API that aims to improve and provide more features than PHP's built-in reflection API.  

Please help us by clicking to our sponsor:

encrypt php scriptsProtect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.

So, how did you like this issue?

Like us on FacebookFollow us on Twitter
We are still trying to grow our list. If you find PHP Weekly useful please tweet about us! Thanks.
Also, if you have a site or blog related to PHP then please link through to our site.

unsubscribe from this list | update subscription preferences 

Subscribe! Enter your email address below:

NO SPAM: We absolutely hate spam. We will not share, rent, or give away your email address to anyone.You can unsubscribe at any time. Easily!

Talk to us!

If you have some news, want to share a link with us or chat with us feel free to email us.

And we also have an RSS feed that you can use.

Like us on FacebookFollow us on Twitter

Copyright ©