The model is where the software meets the domain. The goal of the model is to identify and express the use cases and constraints that will be built into the software, using schemas and diagrams. It is where we extract the essential concepts from the domain and where we consolidate the ubiquitous language.
We continue our exploration of DDD with the expression of the domain. A domain is a group of related concepts and ideas about a field, articulated by experts in that field. Expressing the domain is a way to get familiar with its lexical field and to start building the ubiquitous language, the language to be used consistently in the model and across all communications.
This is the introduction to a blog series about building a PHP CLI tool to help me track my crypto activity. I haven't built anything yet – the goal is to document my progress as I go, publicly. I intend to use Laravel Zero, Event Sourcing, and to follow a Domain-Driven Design approach.
A common aspect of a PHP developer's job is to deal with Composer dependencies. We don't usually need to think about supporting various versions of these dependencies, just as we don't need to think about accommodating a range of PHP versions. Things are different for open-source software maintainers – they need to ensure their libraries will work with as many environments as possible. This post explores one way of automating compatibility testing, using a combination of test coverage and a GitHub workflow.
When you think of command-line applications, PHP doesn't immediately come to mind. Yet the language powers many popular tools, either as independent programs or to be used within projects. This tutorial will walk you through the process of creating a simple game running in the terminal, using Symfony's Console Component as a bedrock, GitHub Actions for testing, and Composer for distribution.
To a large extent, Vim still has a bad rep. This needs to change. But Vim does need a little help to get started, so here's an article explaining the basics, with gifs. The best part? There's probably a Vim extension for your favourite code editor already, so you can start using it today.
This post is about what to expect from Laravel Sail, how it works and how to make the most of it; it is also a plea to developers to break away from it, in favour of their own, tailored solution.
This article demonstrates how to write integration tests that compare API responses to OpenAPI 3.0.x definitions in order to validate that the former conform to the latter.
A few weeks ago, GitHub quietly released a feature that was quickly noticed by the community – profile READMEs. A profile README is a global README file for your GitHub profile; in this article, I describe how I've used GitHub Actions and PHP to automatically update my profile README to list my blog's latest publications.
Git hooks are scripts that are run every time a specific Git-related event happens, like a commit or a checkout. This article shows you how to use a simple hook to enforce a coding standard at every commit in a PHP project.