Catpaw is an opinionated dependency injection library that comes with batteries included for developing asynchronous and declarative general purpose programs.
It leverages php attributes to provide declarative apis, and the amphp platform to make your program asynchronous.
Table of Contents | Description |
---|---|
📦 Container | Provide dependencies and retrieve them. |
📦 Constructors | Execute code when a dependency is resolved. |
📦 Entry | Execute code when a dependency is resolved. |
|
Manage errors. |
🌠 Server | Start a server. |
🚆 Server Router | Define routes. |
📃 Server Path Parameters | Define path parameters for your routes. |
🎫 Server Session | Manage sessions. |
📞 Server Websockets | Serve websockets. |
💠 Server Open Api | Generate an Open Api definition. |
🎛️ Command | Create a console command. |
🗄️ Database | Connect to a database and send queries. |
🗄️ Stores | Store data in memory and react to changes in said data. |
🚥 Queues | Create in memory queues and tag them. |
🚥 Signals | Create signals and react to them. |
🕐 Schedule | Schedule code execution using a human readable format. |
💡 RaspberryPi | Control your RaspberryPi's GPIOs. |
Note
This project is aimed at linux distributions, some features may or not may work on Windows and/or MacOS.
Feel free to contribute fixing issues for specific platforms.
You will need at least php 8.3.
Create a new project using one of the starter templates.
You can start from scratch
composer create-project catpaw/starter
or you can start with a web server
composer create-project catpaw/web-starter
Every program must declare a main
function in the global scope, that will be your entry point.
// src/main.php
use Psr\Log\LoggerInterface;
function main(LoggerInterface $logger){
$logger->info("hello world");
}
You can run your program in one of three modes.
Enter Development Mode with
make dev
This mode will run your program with XDebug enabled.
Note
Enter Watch Mode with
make watch
This mode will run your program with XDebug enabled and it will restart your program every time you make a change to your source code.
Note
Note
By default "source code" means the "src" directory.
You can change this configuration in your makefile, see section watch
, parameter resources
.
Enter Production Mode with
make start
It's just as it sounds, run your program directly.
No debuggers, not extra overhead.
It is possible, but no required, to bundle your program into a single .phar
file with
make build
The building process can be configured inside the build.ini
file.
After building your application, you can simply run it using
php out/app.phar
The resulting .phar
will include the following directories
src
vendor
-
.build-cache
(created at build time)
It's a portable bundle, you just need to make sure php is installed on whatever machine you're trying to run it on.
Install xdebug
apt install php8.3-xdebug
Configure your .vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen",
"type": "php",
"request": "launch",
"port": 9003
}
]
}
Start debugging.