Cal Evans (Voices of the ElePHPant) Its the Booze Talking – Contributing to Open Source (1.12.2015, 05:00 UTC)

@TessaMero – Tessa Mero

@elstamey – Emily Stamney

@AmbassadorAwsum – Amanda Folson

@ircmaxell – Anthony Ferrar

@Crell – Larry Garfield

@JoePFerguson – Joe Ferguson

Show Notes

The post Its the Booze Talking – Contributing to Open Source appeared first on Voices of the ElePHPant.

PHP ClassesPHP Automated SMS Gateway for Request and Response Service Part 2: Automatic Responses (1.12.2015, 03:00 UTC)
By Dave Smith
Once you start improving your SMS response service using the DOTGO system, the types of the messages that you want to handle get more complex, so you need a better way to organize and process those messages.

Read this article to learn how to how to use the PHP DOTGo Engine package to handle more complex responses using DOTGO Web service's terminating nodes.
SitePoint PHPFilling out PDF Forms with PDFtk and PHP (30.11.2015, 17:00 UTC)

PDF files are one of the most common ways of sharing documents online. Whether we need to pass our clients’ documents to third-party service providers like banks or insurance companies, or just to send a CV to an employer, using a PDF document is frequently the first option.

PDF files can transfer plain/formatted text, images, hyperlinks, and even fillable forms. In this tutorial, we’re going to see how we can fill out PDF forms using PHP and a great PDF manipulation tool called PDFtk Server.

To keep things simple enough, we’ll refer to PDFtk Server as PDFtk throughout the rest of the article.

Digital document illustration


We’ll use Homestead Improved for our development environment, as usual.

Once the VM is booted up, and we’ve managed to ssh into the system with vagrant ssh, we can start installing PDFtk using apt-get:

sudo apt-get install pdftk

To check if it works, we can run the following command:

pdftk --version

The output should be similar to:

Copyright (c) 2003-13 Steward and Lee, LLC - Please This is free software; see the source code for copying conditions. There is NO warranty, not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

How It Works

PDFtk provides a wide variety of features for manipulating PDF documents, from merging and splitting pages to filling out PDF forms, or even applying watermarks. This article focuses on using PDFtk to fill out a standard PDF form using PHP.

PDFtk uses FDF files for manipulating PDF forms, but what is an FDF file?

FDF or Form Data File is a plain-text file, which can store form data in a much simpler structure than PDF files.

Simply put, we need to generate an FDF file from user submitted data, and merge it with the original PDF file using PDFtk’s commands.

What Is Inside an FDF File

The structure of an FDF file is composed of three parts: the header, the content and the footer:

Continue reading %Filling out PDF Forms with PDFtk and PHP%

Paul M. Jones50% Off “Modernizing Legacy Applications in PHP” (30.11.2015, 14:37 UTC)

For Black Friday/Cyber Monday, and the rest of this week, my books Modernizing Legacy Applications in PHP and Solving the N+1 Problem in PHP are 50% off. If you’ve been waiting for a sale to get these books, now is your chance!

Thijs FerynFabrizio Branca – Talking about Magento & living in the Bay Area (30.11.2015, 08:59 UTC)

This is the last episode of the Zendcon 2015 series. And the term “last but not least” definitely applies here. I

The post Fabrizio Branca – Talking about Magento & living in the Bay Area appeared first on Thijs Feryn's blog.

PHP ClassesHow to Use Queue To Speedup PHP Processing Tasks Part 1: Queueing Slow Tasks (30.11.2015, 05:03 UTC)
By Alexander Skakunov
Queues are an important solution, especially when need to create a processing task that may take a long time to complete and the user or the creating process cannot wait until the task is finished.

This is the case for instance of sending newsletter email messages to many users.

Read this article to learn how queues work and how you can implement one in PHP using a simple database.
Ben RamseyYak Shaving Is the Entire Job Description (30.11.2015, 00:00 UTC)

Earlier this year, I worked on a solution to help us manage changes and history when maintaining different versions of Amazon Machine Images (AMIs). I entertained a wide range of ideas from Docker to AWS CloudFormation to a collection of shell scripts.

Finally, after asking in #pynash (Nashville’s Python user group) on Freenode IRC, Jason Myers pointed me to Packer as a potential solution.

Packer is a tool for creating machine and container images for multiple platforms from a single source configuration.

Packer turned out to be the right tool for the job, but I almost scrapped it, since I ran into a few problems.

When I began my journey as a programmer, every task was fraught with problems, and I loved it. Everything was new, and every problem was an opportunity to learn and grow. It was great.

Somewhere along the way, though, problems became nuisances. As I grew older in life and my career, my tolerance for problems became lower, and my desire for things to Just Work™ became greater.

As I struggled to find a solution for the problem I had with Packer, Tate Eskew reminded me that yak shaving is a part of my job.

<teskew> i'd just patch it, then. keep it in a central place so you only compile it once.
then when it's put into mainline, just switch out the binary
<teskew> either way, it's a pretty simple patch to test and change
<ramsey> ugh… gotta set up an environment just to build packer
<ramsey> "simple"
<teskew> you act like yak-shaving isn't the name of the game
<ramsey> :P
<teskew> hell, it's the entire job description
<teskew> :)
<ramsey> I am not an ops person
<teskew> you are right now :)

I ended up patching Packer for my needs, and I had fun doing it. I learned a valuable lesson that day: Despite how we may gripe and complain about shaving yaks, it’s part of our job as programmers and problem solvers, and often, it’s the part that brings us the most satisfaction. I’ve learned to embrace yak shaving, and doing so has changed my outlook on my job, open source contributions, and community organizing.

Yak shaving isn’t just part of our jobs, it’s the entire job description.

is a web craftsman, author, and speaker. He is a software architect at ShootProof, where he builds a platform for professional photographers. He enjoys organizing user groups and contributing to open source software. Ben blogs at and is @ramsey on Twitter.

“Yak Shaving Is the Entire Job Description” was originally published at and is Copyright © 2015 Ben Ramsey. It is licensed for use under a Creative Commons Attribution-ShareAlike license.

Liip PHP 7.0.0 (RC8) for OS X and CloudFoundry (28.11.2015, 08:38 UTC)

PHP 7.0 is very very near, if no showstoppers show up during the current Release Candidate #8. And I finally managed to update the package on, so that you can test and start writing applications on your local OS X machine easily, as well. The installer also automatically does the right thing in the apache configuration with regards to “mod_php7” and “mod_php5”.

Furthermore, since we are using CloudFoundry in one of our bigger projects, I also extended the official PHP buildpack to include PHP 7.0 (and some other things like varnish, but that’s not relevant for this). This way we can easily see, if our apps still work with PHP 7 and do some benchmarks (the initial ones looked promising). To use the buildpack, add the following line to your manifest.yml


and adjust .bp-config/options.json to include (and maybe also change your composer.json to use PHP 7)


Be aware, that I didn’t port many of the extensions the official buildpack includes, so your milage may vary. And if you want to be sure it’s thoroughly tested, maybe better wait for official PHP 7.0 support in the CloudFoundry buildpack. I’m sure, they won’t wait long once it’s is released.

There’s now no excuse anymore to not test your apps against PHP 7.0

SitePoint PHPModeling an Aggregate with Eloquent (27.11.2015, 17:00 UTC)

The Aggregate pattern is an important part of Domain Driven Design. It prevents inconsistencies and is responsible for enforcing business rules within a collection of objects. For these reasons alone, it is clear to see why it is a key component of a domain model.

Architectural advice recommends that the layer containing the Domain Model be independent from infrastructural concerns. While this is good advice, the Active Record pattern on the other hand wraps a row in the database. Because of this, it is almost impossible to decouple from the persistence layer.

Mixing persistence concerns into a Domain Model can become complex and lead to a lot of bad decisions. This does not mean that it is impossible to create an Active Record Domain Model. In this article, we will work through an example of building an Aggregate which also extends Eloquent: a popular Active Record ORM.

What is an Aggregate?

An Aggregate is a collection of objects which act as a single unit - with one of these objects acting as the Aggregate’s Root. Interaction from outside of the Aggregate must only communicate through the Root object. Aggregate Roots can then manage the consistency of all the objects within its boundary.

A set of elements joined into ></p> <p>Boundaries for Aggregates define the scope of a transaction. Before the transaction can be committed, manipulation to the cluster of objects must comply with the business rules. Only one Aggregate can be committed within a single transaction. Any changes required to additional Aggregates must be eventually consistent, happening within another transaction.</p> <p>In his book, <a href=Implementing Domain-Driven Design, Vaughn Vernon outlines a set of guidelines in which he calls: “the rules of Aggregate design”:

  1. Protect True Invariants in Consistency Boundaries
  2. Design Small Aggregates
  3. Reference Other Aggregates Only By Identity
  4. Use Eventual Consistency Outside the Consistency Boundary

Continue reading %Modeling an Aggregate with Eloquent%

Remi ColletForum PHP in Paris 2015 (27.11.2015, 13:15 UTC)

Back from Forum PHP Paris 2015.

First, a huge thanks to AFUP for the organization of this great event, as always, reception was beyond reproach.

This event was, once more, a great opportunity for many and rewarding meetings with lot of  PHP developers and users.

This year was exceptional, because PHP is 20 years old, AFUP is 15 years old and of course because of upcoming  PHP version 7:


On the photo : (top) Derick Rethans, Anatol Belski, me, Zeev Suraski, (bottom) Pierre Joye, Rasmus Lerdorf, Bob Weinand and Nikita Popov.

More photos on Flickr.

I had the change to give a talk about collaboration between upstream (projects) and downstream (distribution) with an important part about QA management by the Fedora project.

Read the slides: Paris2015.pdf.

Feedback seems good, see

I waiting for next meetings.

LinksRSS 0.92   RDF 1.
Atom Feed   100% Popoon
PHP5 powered   PEAR
ButtonsPlanet PHP   Planet PHP
Planet PHP