Building flexible PHP projects
The era of full-stack frameworks is behind us. Nowadays, framework vendors are splitting their monolithic repositories into components with the help of Git subtree, allowing you to cherry-pick ones that you need for your project. This means that you can build your application on top of Zend Service Manager, Aura Router, Doctrine ORM, Laravel (Illuminate) Eloquent, Plates, Monolog, Symfony Cache, or any component out there that can be installed via Composer.
The era of full-stack frameworks is behind us. Nowadays, framework vendors are splitting their monolithic repositories into components with the help of Git subtree, allowing you to cherry-pick ones that you need for your project. This means that you can build your application on top of Zend Service Manager, Aura Router, Doctrine ORM, Laravel (Illuminate) Eloquent, Plates, Monolog, Symfony Cache, or any component out there that can be installed via Composer.
ARE TRAITS EVIL?
What do you think about Traits in PHP? Do you think they are evil and should avoid using them? If using them what are some common pitfalls fx where not to use them? Maybe you got some bad or good experience?
What do you think about Traits in PHP? Do you think they are evil and should avoid using them? If using them what are some common pitfalls fx where not to use them? Maybe you got some bad or good experience?
Getting Started with RabbitMQ in PHP
RabbitMQ is the message broker. We can use that to schedule background tasks or send events asynchronously. There are good writeups on the benefits it gives to you: Top 10 Uses For A Message Queue, Main features and benefits of message queuing.
RabbitMQ is the message broker. We can use that to schedule background tasks or send events asynchronously. There are good writeups on the benefits it gives to you: Top 10 Uses For A Message Queue, Main features and benefits of message queuing.
Creating your own Domain Event Dispatcher
A couple of weeks ago we looked at implementing Domain Events. Domain Events form a crucial building block in Domain Driven Design by allowing us to effectively decouple our application using the Publish-subscribe pattern.
A couple of weeks ago we looked at implementing Domain Events. Domain Events form a crucial building block in Domain Driven Design by allowing us to effectively decouple our application using the Publish-subscribe pattern.
Matthias Noback - Hexagonal Architecture - Message-Oriented Software Design
Commands, events, queries - three types of messages that travel through your application. Some originate from the web, some from the command-line. Your application sends some of them to a database, or a message queue. What is the ideal infrastructure for an application to support this on-going stream of messages?
https://www.youtube.com/watch?v=K1EJBmwg9EQ
Commands, events, queries - three types of messages that travel through your application. Some originate from the web, some from the command-line. Your application sends some of them to a database, or a message queue. What is the ideal infrastructure for an application to support this on-going stream of messages?
https://www.youtube.com/watch?v=K1EJBmwg9EQ
YouTube
Matthias Noback - Hexagonal Architecture - Message-Oriented Software Design
Commands, events, queries - three types of messages that travel through your application. Some originate from the web, some from the command-line. Your application sends some of them to a database, or a message queue. What is the ideal infrastructure forβ¦
How I generate model factories in light speed!
I was sick and tired building model factories for every table I wanted to test in my laravel applications. So I woke up this morning and decided to try and make a helper command about this. In a Laravel 5.4 application I am currently working on, I created a new command by using the usual artisan make:command
I was sick and tired building model factories for every table I wanted to test in my laravel applications. So I woke up this morning and decided to try and make a helper command about this. In a Laravel 5.4 application I am currently working on, I created a new command by using the usual artisan make:command
How PHP Executes β from Source Code to Render
This article will skim through these stages and show how we can view the output from each stage to really see what is going on. Note that while some of the extensions used should already be a part of your PHP installation (such as tokenizer and OPcache), others will need to be manually installed and enabled (such as php-ast and VLD).
This article will skim through these stages and show how we can view the output from each stage to really see what is going on. Note that while some of the extensions used should already be a part of your PHP installation (such as tokenizer and OPcache), others will need to be manually installed and enabled (such as php-ast and VLD).
From Monolith to Microservices
The first step in the rebuild of our web platform is a proper foundation: the infrastructure. And our title has already given away the first decision that weβve made: weβre going for microservices.
The first step in the rebuild of our web platform is a proper foundation: the infrastructure. And our title has already given away the first decision that weβve made: weβre going for microservices.
Getting to Know and Love Xdebug
Itβs been 15 years since Xdebug first came out. We think this is the perfect opportunity to re-introduce it to the world, and explain how and why it does what it does.
Itβs been 15 years since Xdebug first came out. We think this is the perfect opportunity to re-introduce it to the world, and explain how and why it does what it does.
PHP and immutability: difficulties and scalars - part one
Being a weakly typed dynamic language, PHP has not really had the concept of immutability built into it. Weβve seen the venerable define() and CONSTANTS of course, but theyβre limited. Whilst PHP does ship with an immutable class as part of itβs standard library, DateTimeImmutable, there is no immediately obvious method to create custom immutable objects.
Being a weakly typed dynamic language, PHP has not really had the concept of immutability built into it. Weβve seen the venerable define() and CONSTANTS of course, but theyβre limited. Whilst PHP does ship with an immutable class as part of itβs standard library, DateTimeImmutable, there is no immediately obvious method to create custom immutable objects.
PHP and immutability: modified copies - part two
There were a few issues to work through, but we got there in the end. Now onto making the immutable class more useful and easier to create modified copies. Note that these are copies and not modifications, in-place, to the original objects.
There were a few issues to work through, but we got there in the end. Now onto making the immutable class more useful and easier to create modified copies. Note that these are copies and not modifications, in-place, to the original objects.
PHP and immutability: objects and generalisation - part three
This one is going to tackle an issue I have hitherto skirted around and avoided. Objects in immutable data structures.
This one is going to tackle an issue I have hitherto skirted around and avoided. Objects in immutable data structures.
Message bus to every PHP application
It is a pattern that enables separate applications to work together, but in a decoupled fashion such that applications can be easily added or removed without affecting the others.
It is a pattern that enables separate applications to work together, but in a decoupled fashion such that applications can be easily added or removed without affecting the others.
Achieving Modular Architecture with Forwarding Decorators
As your web application becomes larger, you certainly start to think more about designing a flexible, modular architecture which is meant to allow for a high amount of extensibility. There are lots of ways to implement such architecture, and all of them circle around the fundamental principles: separation of concerns, self-sufficiency, composability of the parts of an app.
As your web application becomes larger, you certainly start to think more about designing a flexible, modular architecture which is meant to allow for a high amount of extensibility. There are lots of ways to implement such architecture, and all of them circle around the fundamental principles: separation of concerns, self-sufficiency, composability of the parts of an app.
Programming With Yii2: Building Community With Voting, Comments, and Sharing
In today's tutorial, I'm going to show you how to extend Yii to easily mimic a site like Reddit with voting, comments, and sharing.
In today's tutorial, I'm going to show you how to extend Yii to easily mimic a site like Reddit with voting, comments, and sharing.
An open-source web platform for the new President of France
In April 2016, Emmanuel Macron, now President of France, created a political movement called "En Marche!" ("On the Move" in English), initially as a door-to-door operation to ask the public what was wrong with France.
In April 2016, Emmanuel Macron, now President of France, created a political movement called "En Marche!" ("On the Move" in English), initially as a door-to-door operation to ask the public what was wrong with France.
The List Function & Practical Uses of Array Destructuring in PHP
PHP 7.1 introduced a new syntax for the list() function. I've never really seen too much list() calls in the wild, but it enables you to write some pretty neat stuff.
This post is a primer of list() and it's PHP 7.1 short notation, and an overview of some use cases I've been applying them to.
PHP 7.1 introduced a new syntax for the list() function. I've never really seen too much list() calls in the wild, but it enables you to write some pretty neat stuff.
This post is a primer of list() and it's PHP 7.1 short notation, and an overview of some use cases I've been applying them to.
PHP Language Trivia
Some tidbits about weird behavior and/or performance characteristics in PHP
Some tidbits about weird behavior and/or performance characteristics in PHP
Extracting Value Objects
Software systems usually get more complex over time. In the beginning a variable starts out to represent something very simple with very few rules and constraints that can are enforced in a single location of the code.
Software systems usually get more complex over time. In the beginning a variable starts out to represent something very simple with very few rules and constraints that can are enforced in a single location of the code.
Web Developer Security Checklist
Developing secure, robust web applications in the cloud is hard, very hard. If you think it is easy, you are either a higher form of life or you have a painful awakening ahead of you.
Developing secure, robust web applications in the cloud is hard, very hard. If you think it is easy, you are either a higher form of life or you have a painful awakening ahead of you.