PHP
Migrating our billing portal to the latest version of Laravel Spark
Over at Flare, we’re now using the latest version of Spark. In this blog post we shared the customizations we needed to make. Read more
Over at Flare, we’re now using the latest version of Spark. In this blog post we shared the customizations we needed to make. Read more
[AdSense-A]
Whenever something happens in one of your repos on GitHub, you can configure a webhook to be sent to your app. This way, you can perform some extra logic when a particular event occurs on the repo. A silly example would be to send someone a mail when an issue is opened.
We've created a new package called spatie/laravel-github-webhooks that makes it easy to consume GitHub webhooks in a Laravel app. In this blog post, I'd like to tell you all about it.
In this stream, I show how to use the package, go over the source code, and explain how it is tested.
After you've installed the package in your app, you can start configuring what should happen when GitHub webhooks hit your app. GitHub expects your app to respond as fast as possible. That's why the package will, when a webhook comes in, create a GitHubWebhookCall
model with the payload of the webhook in the database. It will pass that model to a queued job so that an HTTP response can be sent very quickly, and the actual work that needs to be done can be performed on the queue.
In the jobs
key of the github-webhooks
config file, you can configure which jobs should be executed when certain events come in. Here's an example:
// in the `github-webhooks` config file
'jobs' => [
'issues.opened' => AppJobsHandleIssueOpenedWebhookJob::class,
],
In this example, the HandleIssueOpenedWebhookJob
job will be dispatched when a webhook of type issues
comes in with an action
of opened
in the payload.
Here's how the HandeIssueOpenedWebhookJob
could look like:
namespace AppJobsGitHubWebhooks;
use IlluminateBusQueueable;
use IlluminateQueueSerializesModels;
use IlluminateQueueInteractsWithQueue;
use IlluminateContractsQueueShouldQueue;
use SpatieGitHubWebhooksModelsGitHubWebhookCall;
class HandleIssueOpenedWebhookJob implements ShouldQueue
{
use InteractsWithQueue, Queueable, SerializesModels;
public GitHubWebhookCall $gitHubWebhookCall;
public function __construct(
public GitHubWebhookCall $webhookCall
) {}
public function handle()
{
// React to the issue opened at GitHub event here
// You can access the payload of the GitHub webhook call with `$this->webhookCall->payload()`
}
}
And that is all you have to do to handle an incoming GitHub webhook in your app.
spatie/laravel-github-webhooks is very much a meat-and-potatoes kind of package. No new big ideas are introduced here. Still, the package handles a lot of work for you:
To know more about the package, head over to the readme on GitHub. There are a lot of options not mentioned in this post. Also, be sure to look at this list of packages our team has created previously.
If you want to support our open source efforts, consider picking up one of our paid products.
(more…)[AdSense-A]
Knowing how to write automated tests is a fundamental skill for any developer. By adding a quality test suite to your application, you'll end up with fewer bugs in production. It allows you to refactor with confidence using a test suite that has your back.
We're currently recording a new premium video course called Testing Laravel. It will be released in September.
In this course, learn how to test Laravel applications from scratch. We've created a fully functional blog demo application that we'll write tests for. After we've covered the basics, we'll show you advanced subjects. You'll see how we test our applications at Spatie. We'll cover snapshot testing, mocks, APIs, testing domain code, setting up CI, and much more. We'll also walk you through the tests of real-world applications.
Pest is the new kid on the block in the PHP testing world that focuses on stellar developer experience. It's rapidly rising in popularity, and we believe it'll only grow in the near future. That's why you'll get two flavours of the entire course: in one, we'll handle PHPUnit. In the other, we'll focus on Pest. We'll also show you how to convert a PHPUnit test suite to Pest.
My colleague Brent and I are well underway recording all the videos. We'll be ready with recording them all early September.
We hope that this course will help new fellow Artisan to write tests for their apps. And if you already know how to test, we have a few cool testing tricks to share that we use to test the big applications of our own.
If you want to get notified when this course launches, subscribe now to the mailing list at Testing Laravel.
(more…)The release of PHP 8.1 will be here within a few months, and once again there are many features to get excited about. Read more
In this excellent, humanly written blog post, Laracasts founder Jeffrey Way offers some good tips for applying at any company. Read more
Here’s a neat use of our Blink package. Read more
Simon of the Tailwind Labs team, keeps creating cool videos. In this video he recreates the iOS notifications screen.
JetBrains ran their yearly survey on all the things that devs like and use. Here are the results for the PHP ecosystems Read more
Here’s a cool technique by Bram Van Damme Read more