이 프로젝트는 클린 아키텍처 앱의 애플리케이션 부분에 대한 종속성 주입을 관리하는 클래스 집합입니다.
사용된 프레임워크와 독립적입니다.
Git : https://git.small-project.dev/lib/small-clean-application
패키지스트 : https://packagist.org/packages/small/clean-application
composer require small/clean-application
매개변수는 UseCase 생성자에 자동으로 주입되도록 관리됩니다.
파사드 정적 객체를 통해 매개변수를 설정할 수 있습니다.
\Small\CleanApplication\Facade::setParameter('test', [ 'host' => 'http://clean.com', 'port' => 80 ]);
파사드를 통해서도 얻을 수 있습니다:
echo \Small\CleanApplication\Facade::getParameter('test.host');
출력 :
http://clean.com
유스케이스는 SmallCleanApplicationContractUseCaseInterface를 구현하는 유스케이스를 클래스로 구현한 것입니다.
예를 들어, 다음은 문자열을 반환하는 간단한 사용 사례입니다.
<?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'); } }
Facade를 사용하여 사용할 수 있습니다.
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());
출력 :
a
사용 사례 생성자에 다른 사용 사례를 삽입할 수 있습니다.
<?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() ); } }
testUseCase 속성은 자동으로 TestUseCase 개체로 생성됩니다.
사용 사례 생성자에 속성을 입력하고 이름을 지정하여 사용 사례에 매개변수를 삽입할 수 있습니다.
<?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() ); } }
밑줄('_')은 매개변수 구조의 배열 키를 구분합니다. 다음은
와 일치하는 예입니다.
$testUseCase_param :
\Small\CleanApplication\Facade::setParameter('testUseCase', ['param' => 'p']);
코드의 세 가지 인터페이스 구조:
다음은 TestDependency 요청 클래스 예시입니다.
<?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; } }
그리고 그의 인터페이스는
<?php namespace Small\CleanApplication\Test\Feature\Fixture\Interface; use Small\CleanApplication\Contract\RequestInterface; interface TestDependencyRequestInterface extends RequestInterface { public function getBefore(): string; }
다음은 응답 구현입니다.
<?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; } }
그리고 그의 인터페이스는
<?php namespace Small\CleanApplication\Test\Feature\Fixture\Interface; use Small\CleanApplication\Contract\ResponseInterface; interface TestDependencyResponseInterface extends ResponseInterface { public function getStatus(): string; }
위 내용은 소규모 클린 애플리케이션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!