PHP code example of andydefer / directive-forge

1. Go to this page and download the library: Download andydefer/directive-forge library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

andydefer / directive-forge example snippets




declare(strict_types=1);

namespace App\Directives;

use AndyDefer\Directive\AbstractDirective;
use AndyDefer\Directive\Enums\ExitCode;
use AndyDefer\DomainStructures\Collections\Utility\StringTypedCollection;

final class UserListDirective extends AbstractDirective
{
    public function getSignature(): string
    {
        return 'user-list';
    }

    public function getDescription(): string
    {
        return 'Description pour user-list';
    }

    public function getAliases(): StringTypedCollection
    {
        return new StringTypedCollection();
    }

    public function shouldBootLaravel(): bool
    {
        return false;
    }

    public function execute(): ExitCode
    {
        $this->info('Directive exécutée avec succès !');
        
        return ExitCode::SUCCESS;
    }
}



declare(strict_types=1);

namespace App\Actions\User;

use AndyDefer\Actions\Actions\AbstractAction;
use AndyDefer\Actions\Http\ResponseFactory;
use AndyDefer\DomainStructures\Abstracts\AbstractRecord;

final class ShowAction extends AbstractAction
{
    protected function handle(AbstractRecord $request): ResponseFactory
    {
        // TODO: Implémentez votre logique métier ici
        
        return ResponseFactory::json(['message' => 'Action exécutée avec succès']);
    }
}



declare(strict_types=1);

namespace App\Http\Requests;

use AndyDefer\Actions\Http\Requests\AbstractRequest;
use AndyDefer\DomainStructures\Abstracts\AbstractRecord;
use AndyDefer\DomainStructures\Utils\EmptyRecord;

final class StoreUserRequest extends AbstractRequest
{
    public function authorize(): bool
    {
        return true;
    }

    public function rules(): array
    {
        return [];
    }

    public function getRecord(): AbstractRecord
    {
        return new EmptyRecord();
    }
}



declare(strict_types=1);

namespace App\ValueObjects;

use AndyDefer\DomainStructures\Abstracts\AbstractValueObject;

final class EmailAddressVO extends AbstractValueObject
{
    public function __construct(
        // TODO: Ajoutez les propriétés avec le mot-clé readonly
    ) {
        // TODO: Ajoutez la logique de validation
    }
}



declare(strict_types=1);

namespace App\Configs;

use AndyDefer\DomainStructures\Abstracts\AbstractConfig;

final class DatabaseConfig extends AbstractConfig
{
    // TODO: Ajoutez les méthodes de configuration
}

// Dans votre AppServiceProvider
use AndyDefer\DirectiveForge\Enums\GeneratorType;

// Surcharge de la configuration
GeneratorType::DIRECTIVE->getConfig()->basePath = '/app/Custom/Directives/';
bash
php artisan vendor:publish --tag=directive-forge-stubs
bash
# 1. Créer une directive pour importer des utilisateurs
./vendor/bin/directive make-directive user/import

# 2. Créer une action avec sa Requête et son Record
./vendor/bin/directive make-action user/process-import --fully

# 3. Créer une requête avec son Record
./vendor/bin/directive make-request api/v1/StoreUserRequest --fully

# 4. Créer une tâche pour le traitement par lots
./vendor/bin/directive make-task user/send-notifications

# 5. Créer un repository pour l'accès aux données
./vendor/bin/directive make-repository user

# 6. Créer un record pour le transfert de données
./vendor/bin/directive make-record user-data

# 7. Créer un objet de valeur
./vendor/bin/directive make-vo EmailAddress

# 8. Créer une classe de configuration
./vendor/bin/directive make-config Database

# 9. Créer une collection typée
./vendor/bin/directive make-typed-collection user-collection --item-type=UserDataRecord

app/
├── Directives/
│   └── User/
│       └── ImportDirective.php
├── Actions/
│   └── User/
│       └── ProcessImportAction.php
├── Http/
│   └── Requests/
│       ├── User/
│       │   └── ProcessImportRequest.php
│       └── Api/
│           └── V1/
│               └── StoreUserRequest.php
├── Tasks/
│   └── User/
│       └── SendNotificationsTask.php
├── Repositories/
│   └── UserRepository.php
├── Records/
│   ├── User/
│   │   └── ProcessImportRecord.php
│   ├── Api/
│   │   └── V1/
│   │       └── StoreUserRecord.php
│   └── UserDataRecord.php
├── ValueObjects/
│   └── EmailAddressVO.php
├── Configs/
│   └── DatabaseConfig.php
└── Collections/
    └── UserCollection.php