What are Layers?
Creating Layers
Use osdd:layer to scaffold a new layer interactively or non-interactively.
The osdd:layer command scaffolds a new layer. It can be run interactively or fully non-interactively via options.
Interactive Mode
Terminal
php artisan osdd:layer
The command walks you through three prompts:
- Target path — which path bucket to create the layer in (
functionalortechnical) - Layer name — the Composer package name, e.g.
orders(the vendor is derived from the bucket name) - Generators — a multi-select of files to scaffold
After scaffolding, you are prompted to optionally run composer update vendor/package.
Non-interactive Mode
Terminal
php artisan osdd:layer vendor/orders \
--target-path=/path/to/project/functional \
--generators=migration \
--generators=model \
--generators=factory \
--generators=service-provider
| Option | Description |
|---|---|
[name] | Composer package name (e.g. vendor/orders) |
--target-path | Absolute path to the target bucket directory |
--generators | Repeatable. One or more generator names to run |
Available Generators
| Generator | Default | What it creates |
|---|---|---|
migration | ✓ | database/migrations/xxxx_create_{name}_table.php |
model | ✓ | src/Models/{Name}.php |
factory | ✓ | database/factories/{Name}Factory.php |
service-provider | ✓ | src/Providers/{Name}ServiceProvider.php |
test | ✓ | tests/{Name}Test.php |
controller | — | src/Http/Controllers/{Name}Controller.php |
policy | — | src/Policies/{Name}Policy.php |
seeder | — | database/seeders/{Name}Seeder.php |
What Gets Created
Beyond the generated files, osdd:layer always creates:
- A
composer.jsonwith"type": "layer"and PSR-4 autoload config - A Composer path repository entry in the root
composer.json - A
requireentry for the new package in rootcomposer.json - An
extra.laravel.providersentry pointing to the service provider (whenservice-providergenerator is used)
Example: Create an Orders Layer
Terminal
php artisan osdd:layer
Where do you want to create the layer?
❯ functional
technical
Layer name:
> orders
Which generators would you like to use? (default: migration, model, factory, service-provider, test)
❯ [x] migration
[x] model
[x] factory
[x] service-provider
[x] test
[ ] controller
[ ] policy
[ ] seeder
Do you want to run composer update functional/orders? (yes/no) [yes]
> yes
Your new layer will be at functional/orders/ and auto-registered with Composer.