Looking for more information on how to do PHP the right way? Check out PHP: The Right Way

TutsPlus.com:
Package Management in Laravel
Oct 24, 2017 @ 09:34:28

On the TutsPlus.com site there's a new tutorial posted sharing some helpful tips on how to manage packages in a Laravel application making use of Composer's functionality.

In this article, we'll go ahead and explore the package management feature in the Laravel framework. In the course of the article, we’ll go through a real-world example to demonstrate the purpose of the article.

Package management in Laravel is an important feature that allows you to bundle a piece of functionality so that it can be distributed easily. Moreover, you could always publish your package to repositories like Packagist and GitHub that allow other developers to benefit from your package.

They start by listing out the files that will be involved in the tutorial (requiring a pre-set up Laravel application) and a basic knowledge of the application's structure. The article then walks through setting up some of the prerequisites and the creation of your own custom package. They include the updates to the routing, controller, updates to the view and changes in the service provider handling.

tagged: laravel package management tutorial introduction composer

Link: https://code.tutsplus.com/tutorials/package-management-in-laravel--cms-29625

Pehapkari.cz:
How to connect ELK with Monolog
Oct 23, 2017 @ 10:48:59

On the Pehapkari.cz blog there's a new tutorial posted showing you how to integrate ELK and Monolog for simpler to use and more robust log handling.

ELK is awesome stack for logging. Monolog is awesome PHP logging library. Let's make them work together. [...] In a nutshell, Monolog offers you a logger, where you send your logs. This logger has multiple handlers, which send these logs wherever you need them. Monolog has many handlers, which enable you to to simply send logs to many destinations, e.g. files, e-mails, slack, logstash, and many more. [...] ELK stack (now known as Elastic stack) stands for Elasticsearch, Logstash, Kibana stack.

After briefly introducing both technologies the author then gets into the integration, showing how to use either the ElasticSearchHandler or Gelf to ship the logs over for handling. Monolong includes the handler to make this work and the post includes the code/configuration to use it. With the logs being sent out the next step is to set up where you're sending them to. In this case it's a RabbitMQ setup that will then send them along to Logstash. Configuration for this is included as well.

tagged: elk logstash elasticsearch kibana tutorial monolog package integration

Link: https://pehapkari.cz/blog/2017/10/22/connecting-monolog-with-ELK/

Freek Van der Herten:
Introducing Browsershot v3: the best way to convert html to PDFs and images
Oct 23, 2017 @ 09:13:57

In a new post to his site Freek Van der Herten has an announcement about the release of the latest stable version of the "Browsershot" package, version 3.

To convert html to a pdf or an image using wkhtmltopdf and wkhtmltoimage tends to be the popular option. Unfortunately those tools contain an outdated browser engine to do their thing, so you can’t use any newish css syntax. A while ago Google added a headless mode to Chrome. They’ve also released a javascript library called Puppeteer that gives you programmatic and fine grained control over Chrome.

Wouldn’t it be great if we could just use Chrome and Puppeteer to convert html to PDFs and images? Browsershot is package that does exactly that. In this post I’d like to introduce v3 of Browsershot, which was recently released.

He starts with some basic usage of the package, taking screenshots of example URLs and saving them locally as PDFs. Version 3 now has integration with Puppeteer to perform more complex logic on what parts of the page should be captured and how it should be saved. There's examples of this and a look behind the scenes at what the package is doing with the page grabs are called.

tagged: browsershot package screenshot puppeteer version3 release

Link: https://murze.be/2017/10/introducing-browsershot-v3-best-way-convert-html-pdfs-images/

Freek Van der Herten:
Handling Stripe webhooks in a Laravel application
Oct 09, 2017 @ 10:33:06

Freek Van der Herten has a new post to his site showing you how to handle Stripe callbacks when integrating its webhook functionality into your application. True to form, he also created a Laravel package to make it even easier.

In the project I’m currently working on I had to integrate Stripe webhooks. Stripe has great documentation on how to handle webhooks, but it still took a fair amount of time to get the integration just right. My solution for handling webhooks is pretty generic and reusable by others. I decided to extract it to a package called laravel-stripe-webhooks, so nobody has to code this stuff up again. In this blogpost I’d like to share how the package works.

He then goes on to talk about the request validation that happens on the webhook callback and how the information can be reworked if something goes wrong. He then talks about the handling of valid requests either using a custom job or using events to trigger when a "source.chargable" event is fired.

tagged: stripe laravel package webhook tutorial event job

Link: https://murze.be/2017/10/handling-stripe-webhooks-laravel-application/

Laravel News:
Appstract Laravel Blade Directives
Oct 04, 2017 @ 10:22:54

In a new post to the Laravel News site they highlight a package that adds a set of common Blade directives to your Laravel application.

With no shortage of excellent blade extensions circulating in the community, you should also check out the appstract/laravel-blade-directives package.

Whether you end up installing the package or copying a few that you like to your project, here are some notable directives from the project.

Directives included in the package can be used to: check the current route for a match, see if a value is true or not, inline the contents of a CSS file and many more. Check out the full post for examples of these and others the package includes. The source for the package can be found in this repository on GitHub.

tagged: laravel blade directive custom package tutorial

Link: https://laravel-news.com/appstract-laravel-blade-directives

Freek Van der Herten:
A trait to dynamically add methods to a class
Sep 25, 2017 @ 10:50:51

Freek Van der Herten has posted about a new package that's essentially a stand-alone version of Laravel's own "macros" functionality available via a package: macroable.

We recently released our newest package called macroable. It contains a trait that, when applied to class, can dynamically add methods to that class. This trait is basically a stand alone version of the macroable trait in Laravel. In this post I’d like to show you how you can use it, how it works behind the scenes and explain why we created it.

He then gives examples of how it can be used to add a new simple method (essentially a "named closure") and using the "mixin" functionality to add multiple at once. He wraps up the post with a look at how it works behind the scenes, adding the items to a "macros" list and then looking them up if they're not defined on the class.

tagged: package macroable macro trait laravel standalone

Link: https://murze.be/2017/09/trait-dynamically-add-methods-class/

Laravel News:
Laravel 5.5 Now Includes TrustedProxy
Sep 15, 2017 @ 11:07:03

On the Laravel News site there's a new post about a feature introduced in version 5.5 of the popular PHP framework: a proxy that's included by default as a part of the TrustedProxy feature.

Laravel v5.5 was released just a week ago at Laracon EU. You may have noticed that the v5.5 composer.json file requires the similar functionality Symfony has).

tagged: laravel proxy package feature cloudflare tutorial framework

Link: https://laravel-news.com/trusted-proxy

Zeeshan Ahmed:
JWT authentication for Lumen 5.4
Sep 06, 2017 @ 12:44:23

In a recent post to his site ** shows you how to create a system that uses a handy package to create JWT authentication handling for a Lumen-based application. Lumen is the microframework sibling to the Laravel framework.

Recently I have been tinkering with Angular-4 to get a taste of it and I decided to create a quick project to get my hands dirty. I decided to create a blog with authentication etc. My main focus was on the frontend so I decided to quickly bootstrap an application in Lumen because of its simplicity and almost zero-configuration development. For the authentication, I decided to go with JWT and this post is going to be a quick write-up on how I integrated that and how anyone can integrate JWT authentication in their APIs.

He then walks you through the setup of a new Lumen project and populates the database with some sample (faked) user information from a seeder. Next he helps you get the firebase/php-jwt library installed via Composer and creates the matching controller and middleware to wire it into the application. In his example the user is authenticated via the standard username/password form and, when successful, generates a JWT token that's then passed along with other requests for validation by the middleware.

tagged: lumen laravel tutorial jwt authentication token firebase package

Link: https://zeeshanu.github.io/2017/09/05/jwt-authentication-for-Lumen-5.4/

Laravel News:
Laravel Shareable Models Package
Sep 06, 2017 @ 11:56:26

On the Laravel News site there's a new post highlighting a shareable models package that allows for the creation of dynamic routes for models that are shared.

My initial use case was giving certain non-admin user access to a certain resource that is usually only accessible through the admin interface.

Instead of mucking around with special permissions I created this method to create a completely new link from the resource that I wanted to share, that I could then treat like any other route in my application. So a separate controller and separate views. In that route, you can then simply only expose the functionality that you want (make it read-only for example or only show certain fields).

The package allows the automatic creation of "shareable links" to models including functionality that allows for password protection and expiration times. A code example is included showing how to set up a link to an article entry and what the result looks like (a JSON response).

tagged: laravel package sharable model link spotlight

Link: https://laravel-news.com/laravel-shareable-models-package

Zend Framework Blog:
Specialized Response Implementations in Diactoros
Aug 24, 2017 @ 14:14:38

On the Zend Framework blog today Matthew Weier O'Phinney has written up a post showing how to implement specialized responses in Diactoros, a PHP package that makes it easier to work more directly with the request and response in your application.

When writing PSR-7 middleware, at some point you'll need to return a response.

Maybe you'll be returning an empty response, indicating something along the lines of successful deletion of a resource. Maybe you need to return some HTML, or JSON, or just plain text. Maybe you need to indicate a redirect.

But here's the problem: a generic response typically has a very generic constructor. [...] Fortunately, Diactoros provides a number of convenience implementations to help simplify the most common use cases.

He then spends the rest of the article showing some example responses types and the code to make them work:

  • EmptyResponse
  • RedirectResponse
  • TextResponse
  • HtmlResponse
  • JsonResponse

Each one is included as a part of the Diactoros package. For more information, check out the documentation for the package and accompanying examples.

tagged: tutorial diactoros package response example http zendframework

Link: https://framework.zend.com/blog/2017-08-24-diactoros-responses.html