This project is a set of class to manage dependency injection of application's part of a clean architecture app,
independently of the framework used.
Git : https://git.small-project.dev/lib/small-clean-application
Packagist : https://packagist.org/packages/small/clean-application
composer require small/clean-application
Parameters are managed to automatically inject them in UseCase constructor.
You can set parameters through the facade static object :
\Small\CleanApplication\Facade::setParameter('test', [ 'host' => 'http://clean.com', 'port' => 80 ]);
You can also get them through the facade :
echo \Small\CleanApplication\Facade::getParameter('test.host');
Output :
http://clean.com
A use case is a class materialization of use case that implement SmallCleanApplicationContractUseCaseInterface.
For example, here is simply use case that return a string :
Copy after login
You can use it using 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());
Output :
a
You can inject another use case in the use case constructor :
getBefore() . $this->testUseCase->execute($request)->getStatus() ); } }
The property testUseCase will automatically be created as TestUseCase object.
You can inject parameters in your use case by typing and naming property in your use case constructor :
testUseCase_param . $request->getBefore() . $this->testUseCase->execute($request)->getStatus() ); } }
The underscrore ('_') separate array keys of parameters structure. Here is an example matching with the
$testUseCase_param :
\Small\CleanApplication\Facade::setParameter('testUseCase', ['param' => 'p']);
Three interface structure your code :
Here's ourTestDependencyexample request class :
before; } }
And his interface :
Copy after login
And here is the response implementation :
status; } }
And his interface :
Copy after login
The above is the detailed content of Small Clean Application. For more information, please follow other related articles on the PHP Chinese website!