Zendcon 2017 - Tutorials

Build a Bot Workshop: Async Primer

Adam Englander Beginner

Asynchronous software development is rapidly moving from the niche to the mainstream. That mainstream now includes PHP. This workshop will give you hands on instruction in building an asynchronous application in PHP. We'll build a Twitter Bot utilizing the Amp concurrency framework for PHP and the Twitter Streaming API. During this time you'll learn the basics regarding the Amp event loop, generators and co-routines, and writing non-blocking code. Get ready for the future of PHP today.

Building Middleware Web APIs in PHP 7 with Expressive

Enrico Zimuel Beginner

In this tutorial we'll cover how to design and implement web APIs in PHP 7 using a middleware architecture. We'll use Expressive to implement the API leveraging the PSR-7 standard. We'll demonstrate building both simple RPC and fully RESTful API endpoints. We'll also focus on features like authentication, authorization, versioning, content negotiation, validation and filtering of user's input, and more.

Continuous Delivery with Jenkins, Terraform, AWS, and Docker

Joshua Copeland Advanced

In this tutorial we'll cover setting up a continuous delivery pipeline with Jenkins. We'll use Terraform to provision our AWS resources needed and how to use Jenkins to manage your cloud infrastructure. We'll go through the steps needed to get your PHP app packaged in a Docker image and deployed to AWS Elastic Container Service. You'll see how to match your environments as closely as possible and some things to watch out for.
You'll need an AWS, Docker.io, and GitHub account. For a meaningful setup you'll want a paid AWS account. You'll also need a paid account if you want private repositories for Github and Docker. At the end of this tutorial, you'll be able to push some code to GitHub and your Jenkins instance will automatically pick that change up to test, build, plan, and deploy your PHP application to the cloud. We'll also show you how to rollback code; update composer dependencies; build Docker images; manage resources; and setup RC, QA, staging, and other environments. Please come prepared by signing up for these accounts and having an editor capable of editing PHP, Groovy, Bash, Dockerfile, HCL (Terraform), and JSON.

Create an API centric system

Christian Varela Intermediate

In this tutorial we start by defining an API with Apigility as our main engine, we'll define all the details to make sure we set up our API so it can be consumed by our web application and our mobile application.
We continue by creating a web application that will consume the API resources and how to define the flow from data consumption to views using Zend Framework.
Then we'll define a simple mobile app, which will consume the services from our API. For this we will use Sencha Touch. We'll learn about the details to promote our App to the App store and Google play.

Cryptography with PHP

Mark Niebergall Intermediate

The IT security landscape is littered with events where cryptography was not properly used, leading to leaked sensitive data and major problems for organizations. Learn how to encrypt and hash data using cryptography features in PHP, including password hashing, libsodium, mcrypt, OpenSSL, CrackLib, and CSPRNG. Refresh on current industry standards and review cryptographic algorithms. Come ready to hash passwords, experiment with algorithm costs, and crack weak encryption using attacks from timing, brute force, and rainbow tables.

Let's Migrate to PHP 7

Slavey Karadzhov Beginner

In this workshop we'll show you how to migrate a PHP source code from older versions to PHP 7. Slavey will guide you through a sample project and after that you should be able to migrate your own source code using the techniques demonstrated in the workshop. PHP knowledge is a must. GIT knowledge is a plus. 

Offline Sync for Progressive Web Apps

Bradley Holt Intermediate

With the introduction of Progressive Web Apps and web platform APIs such as persistent storage, payments, and geolocation, the web platform is taking on native apps. A Progressive Web App combines the best parts both a web app and a native app. You browse to a Progressive Web App just like you browse to any other website. It lives at a URL, can be indexed by search engines, and can be linked to from anywhere else on the web. As you continue to use a Progressive Web App it gains additional native app-like capabilities. For example, the app could be installed to the home screen on your device. You might also grant the app the ability to send you push notifications, or the ability to access your camera, your microphone, or other device resources.
 
One important aspect of Progressive Web Apps is the concept of building your app to be Offline First. With an Offline First approach, you design your app for the most resource-constrained environment first. This approach provides a consistent user experience whether the user's device has no connectivity, limited connectivity, or great connectivity. One of the biggest benefits of Offline First apps is that they can be very fast, as they provide zero-latency access to content and data stored directly on the device.
 
The Service Worker API can do most of the heavy lifting when it comes to storing content and assets for Offline First Progressive Web Apps. A bigger challenge can be storing and sync'ing your app's data. One of the best answers today for offline sync for Progressive Web Apps is a combination of Apache CouchDB (an open source document database), Hoodie (an open source Node.js backend for Offline First apps), and PouchDB (an open source JavaScript database that syncs). This stack can provide you with the starting point for your own Progressive Web App mobile backend and frontend, and it's entirely open source! You'll leave this workshop having built a fully-functional Offline First Progressive Web Apps using Polymer, Web Components, Service Workers, Apache CouchDB, Hoodie, and PouchDB.

PHP and DB2 In Depth

Alan Seiden Intermediate

DB2 is the heart of IBM i. For PHP applications, the DB2 database provides performance, data integrity, remote connectivity, and security. This tutorial will show the right way to use DB2 with PHP. Topics include: Performance tips, prevention of SQL injection, library list options, and how to connect IBM i's DB2 from Windows and Linux.
 
Learning objectives:
  • Understand how to get the best performance from DB2 with PHP on IBM i
  • Take steps to secure applications by using parameter markers (prepared statements)
  • Learn about new features that help performance and stability
  • Make the right choices when configuring your application for library lists and more

PHP Package Management with Composer

Clark Everetts Beginner

Get a practical deep-dive into Composer, the dependency manager for PHP. We'll compare Composer to "global" managers like PEAR, apt, and yum; show how Composer helps you obtain the components your applications depend upon, install them into your project, and control their update to newer versions. We'll explain autoloading, demystify keys in the composer.json file, and get you confidently using Composer, with practical examples all the way. When you leave this tutorial, you'll understand:
  • What PHP source code dependency management looks like, and what problem Composer solves
  • How to install Composer (friendly to all developers, including IBM i developers)
  • How to use Composer to install, update, and lock code dependencies to appropriate versions
  • Autoloading in general, Composer's autoloader in particular
  • The difference between composer.json and composer.lock
  • What Semantic Versioning means, and what those version numbers communicate to you as developer
  • Packagist, the public clearing house for Composer-managed packages
  • Considerations when using Composer in development vs. production environments
  • Important do's and don'ts when using Composer
  • Intro to setting up and using a private repository

Start Testing your PHP Code

Jason McCreary Beginner

In this workshop we'll cover different ways to test your PHP code. Our focus will be the tools and writing tests - we won't get caught up in all the various testing practices. With a foundation in tools like PHPUnit, Mockery, and Codeception you can make the decisions about what testing tools and strategies work best for you. So if you're looking to start testing your PHP code, or learn other PHP testing tools, this workshop is for you.

Zend PHP Certification Boot Camp - Part I

Christian Wenz Beginner

The Zend PHP Certification is the industry standard to test a candidate's knowledge of PHP and to aid employers to select suitable developers. Learn what it takes to become a Rogue Wave Zend Certified PHP Engineer by one of the authors of the certification. We'll have a look at all topic areas, discuss common traps and required knowledge for each of them, and will provide you with background information on the test. The full-day tutorial will be conducted by the lead author of the certification and will feature a number of typical questions that resemble the layout of the actual test questions, giving you a realistic impression of the test itself and aiding you in self-assessing your current PHP knowledge. This workshop will feature the new certification exam based on PHP 7.1!

Zend PHP Certification Boot Camp - Part II

Christian Wenz Beginner

The Zend PHP Certification is the industry standard to test a candidate's knowledge of PHP and to aid employers to select suitable developers. Learn what it takes to become a Rogue Wave Zend Certified PHP Engineer by one of the authors of the certification. We'll have a look at all topic areas, discuss common traps and required knowledge for each of them, and will provide you with background information on the test. The full-day tutorial will be conducted by the lead author of the certification and will feature a number of typical questions that resemble the layout of the actual test questions, giving you a realistic impression of the test itself and aiding you in self-assessing your current PHP knowledge. This workshop will feature the new certification exam based on PHP 7.1!