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:

  1. Target path — which path bucket to create the layer in (functional or technical)
  2. Layer name — the Composer package name, e.g. orders (the vendor is derived from the bucket name)
  3. 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
OptionDescription
[name]Composer package name (e.g. vendor/orders)
--target-pathAbsolute path to the target bucket directory
--generatorsRepeatable. One or more generator names to run

Available Generators

GeneratorDefaultWhat it creates
migrationdatabase/migrations/xxxx_create_{name}_table.php
modelsrc/Models/{Name}.php
factorydatabase/factories/{Name}Factory.php
service-providersrc/Providers/{Name}ServiceProvider.php
testtests/{Name}Test.php
controllersrc/Http/Controllers/{Name}Controller.php
policysrc/Policies/{Name}Policy.php
seederdatabase/seeders/{Name}Seeder.php

What Gets Created

Beyond the generated files, osdd:layer always creates:

  • A composer.json with "type": "layer" and PSR-4 autoload config
  • A Composer path repository entry in the root composer.json
  • A require entry for the new package in root composer.json
  • An extra.laravel.providers entry pointing to the service provider (when service-provider generator 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.