PHP code example of plank / laravel-model-resolver

1. Go to this page and download the library: Download plank/laravel-model-resolver 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/ */

    

plank / laravel-model-resolver example snippets




namespace App\Listeners;

use App\Contracts\Content;
use Plank\LaravelModelResolver\Facades\Models;

class PruneContent
{
    public function handle()
    {
        Models::implements(Content::class)
            ->each(fn (Content $content) => $content->prune());
    }
}

use Plank\LaravelModelResolver\Repository\ModelRepository;

return [
    'repository' => ModelRepository::class,
    'ignore' => [
        'DeepCopy\\',
        'Doctrine\\',
        'Illuminate\\',
        'Mockery\\',
        'PHPStan\\',
        'PHPUnit\\',
        'Prophecy\\',
        'Psr\\',
        'Psy\\',
        'Sebastian\\',
        'Symfony\\',
    ],
];

    public function modelInstances()
    {
        Models::all()
            ->map(function (string $class) => new $class);
    }

    public function handle(TableCreated $event)
    {
        $model = Models::fromTable($event->table);

        // ...
    }

    public function handle(Version $from, Version $to)
    {
        Models::implements(Versioned::class)
            ->each(fn (string $class) => $class::copyData($from, $to));
    }

    public function handle()
    {
        Models::implementsAll([Loggable::class, Titleable::class])
            ->each(function (string $class) {
                $models = $class::query()
                    ->whereCondition()
                    ->cursor()
                    ->each(fn (Loggable&Titleable $model) => $model->log($model->title().' has met some condition'));
            });
    }

    public function handle()
    {
        Models::implementsAny([Expires::class, QueuesForDeletion::class])
            ->each(function (string $class) {
                $models = $class::query()
                    ->when(
                        is_a($class, QueuesForDeletion::class, true),
                        fn ($query) => $query->where('should_delete', true)
                    )
                    ->when(
                        is_a($class, Expires::class, true),
                        fn ($query) => $query->where('expires_at', '>=', now())
                    )
                    ->cursor()
                    ->each(fn (Expires|QueuesForDeletion $model) => $model->delete());
            });
    }

    public function purge()
    {
        Models::uses(SoftDeletes::class)
            ->each(function (string $class) {
                $models = $class::query()
                    ->whereNotNull('deleted_at')
                    ->cursor()
                    ->each(fn (Model $model) => $model->forceDelete());
            });
    }

    public function handle()
    {
        Models::usesAll([GetsLogged::class, HasTitle::class])
            ->each(function (string $class) {
                $models = $class::query()
                    ->whereCondition()
                    ->cursor()
                    ->each(fn (Model $model) => $model->log($model->title().' has met some condition'));
            });
    }

    public function handle()
    {
        Models::implementsAny([GetsExpired::class, IsQueuedForDeletion::class])
            ->each(function (string $class) {
                $uses = class_uses_recursive($class);

                $models = $class::query()
                    ->when(
                        in_array(GetsExpired::class, $uses),
                        fn ($query) => $query->where('should_delete', true)
                    )
                    ->when(
                        in_array(IsQueuedForDeletion::class, $uses),
                        fn ($query) => $query->where('expires_at', '>=', now())
                    )
                    ->cursor()
                    ->each(fn (Model $model) => $model->delete());
            });
    }
bash
php artisan laravel-model-resolver:install