Aplikasi Bersih Kecil

WBOY
Lepaskan: 2024-07-27 06:43:22
asal
794 orang telah melayarinya

Small Clean Application

Projek ini ialah satu set kelas untuk mengurus suntikan kebergantungan bahagian aplikasi dalam apl seni bina bersih,
bebas daripada rangka kerja yang digunakan.

Git : https://git.small-project.dev/lib/small-clean-application
Pembungkus : https://packagist.org/packages/small/clean-application

Pasang

composer require small/clean-application
Salin selepas log masuk

Parameter

Parameter diuruskan untuk menyuntiknya secara automatik dalam pembina UseCase.

Anda boleh menetapkan parameter melalui objek statik fasad :

\Small\CleanApplication\Facade::setParameter('test', [
    'host' => 'http://clean.com',
    'port' => 80
]);
Salin selepas log masuk

Anda juga boleh mendapatkannya melalui fasad :

echo \Small\CleanApplication\Facade::getParameter('test.host');
Salin selepas log masuk

Output :

http://clean.com
Salin selepas log masuk

Kelas UseCase

Kes mudah

Kes penggunaan ialah perwujudan kelas kes penggunaan yang melaksanakan SmallCleanApplicationContractUseCaseInterface.

Contohnya, ini hanyalah use case yang mengembalikan rentetan :

<?php

namespace Small\CleanApplication\Test\Feature\Fixture\UseCase;

use Small\CleanApplication\Test\Feature\Fixture\Interface\TestResponseInterface;

class TestUseCase implements \Small\CleanApplication\Contract\UseCaseInterface
{
    public function execute($request): TestResponseInterface
    {

        return new TestResponse('a');

    }


}
Salin selepas log masuk

Anda boleh menggunakannya menggunakan fasad :

use Small\CleanApplication\Test\Feature\Fixture\UseCase\TestUseCase;
use \Small\CleanApplication\Test\Feature\Fixture\UseCase\TestRequest;

echo \Small\CleanApplication\Facade::execute(TestUseCase::class, new TestRequest());
Salin selepas log masuk

Output :

a
Salin selepas log masuk

Menyuntik kes penggunaan lain dalam kes penggunaan anda

Anda boleh menyuntik kes guna lain dalam pembina kes guna :

<?php

namespace Small\CleanApplication\Test\Feature\Fixture\UseCase;

use Small\CleanApplication\Contract\UseCaseInterface;
use Small\CleanApplication\Test\Feature\Fixture\Interface\TestDependencyRequestInterface;
use Small\CleanApplication\Test\Feature\Fixture\Interface\TestDependencyResponseInterface;

class TestDependencyUseCase implements UseCaseInterface
{

    public function __construct(
        protected TestUseCase $testUseCase,
    ) {}

    public function execute($request): TestDependencyResponseInterface
    {

        return new TestDependencyResponse(
            $request->getBefore() . $this->testUseCase->execute($request)->getStatus()
        );

    }

}
Salin selepas log masuk

Properti testUseCase akan dibuat secara automatik sebagai objek TestUseCase.

Menyuntik parameter dalam kes penggunaan anda

Anda boleh menyuntik parameter dalam use case anda dengan menaip dan menamakan harta dalam use case constructor anda :

<?php

namespace Small\CleanApplication\Test\Feature\Fixture\UseCase;

use Small\CleanApplication\Contract\UseCaseInterface;
use Small\CleanApplication\Test\Feature\Fixture\Interface\TestDependencyRequestInterface;
use Small\CleanApplication\Test\Feature\Fixture\Interface\TestDependencyResponseInterface;

class TestDependencyParamUseCase implements UseCaseInterface
{

    public function __construct(
        protected string $testUseCase_param,
        protected TestUseCase $testUseCase,
    ) {}

    public function execute($request): TestDependencyResponseInterface
    {

        if (!$request instanceof TestDependencyRequestInterface) {
            throw new \Exception('Bad request');
        }

        return new TestDependencyResponse(
            $this->testUseCase_param . $request->getBefore() . $this->testUseCase->execute($request)->getStatus()
        );

    }

}
Salin selepas log masuk

Tarik bawah ('_') kekunci tatasusunan berasingan bagi struktur parameter. Berikut ialah contoh yang sepadan dengan
$testUseCase_param :

\Small\CleanApplication\Facade::setParameter('testUseCase', ['param' => 'p']);
Salin selepas log masuk

Antara muka

Tiga struktur antara muka kod anda :

  • SmallCleanApplicationContractUseCaseInterface : Semua kes penggunaan anda mesti melaksanakan antara muka ini
  • SmallCleanApplicationContractRequest : Semua permintaan kes penggunaan anda mesti melaksanakan antara muka ini
  • SmallCleanApplicationContractResponse : Semua tindak balas kes penggunaan anda mesti melaksanakan antara muka ini

Inilah kelas permintaan contoh TestDependency kami :

<?php

namespace Small\CleanApplication\Test\Feature\Fixture\UseCase;

use Small\CleanApplication\Test\Feature\Fixture\Interface\TestDependencyRequestInterface;

readonly class TestDependencyRequest implements TestDependencyRequestInterface
{

    public function __construct(
        protected string $before,
    ) {}

    public function getBefore(): string
    {

        return $this->before;

    }

}
Salin selepas log masuk

Dan antara mukanya :

<?php

namespace Small\CleanApplication\Test\Feature\Fixture\Interface;

use Small\CleanApplication\Contract\RequestInterface;

interface TestDependencyRequestInterface extends RequestInterface
{

    public function getBefore(): string;

}
Salin selepas log masuk

Dan berikut ialah pelaksanaan tindak balas :

<?php

namespace Small\CleanApplication\Test\Feature\Fixture\UseCase;

use Small\CleanApplication\Test\Feature\Fixture\Interface\TestDependencyResponseInterface;

readonly class TestDependencyResponse implements TestDependencyResponseInterface
{

    public function __construct(
        protected string $status,
    ) {}

    public function getStatus(): string
    {
        return $this->status;
    }

}
Salin selepas log masuk

Dan antara mukanya :

<?php

namespace Small\CleanApplication\Test\Feature\Fixture\Interface;

use Small\CleanApplication\Contract\ResponseInterface;

interface TestDependencyResponseInterface extends ResponseInterface
{

    public function getStatus(): string;

}
Salin selepas log masuk

Atas ialah kandungan terperinci Aplikasi Bersih Kecil. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!