If you are using dot-dependency-injection in your project, you don't need to create a separate factory, follow the below steps.
class ExampleService
{
#[\Dot\DependencyInjection\Attribute\Inject(
\Laminas\Session\SessionManager::class,
)]
public function __construct(
private \Laminas\Session\SessionManager $session,
) {
}
}
Open the ConfigProvider of the module where your repository resides.
Add a new entry under factories, where the key is your service's FQCN and the value is \Dot\DependencyInjection\Factory\AttributedServiceFactory.
See the below example for a better understanding of the file structure.
class ConfigProvider
{
public function __invoke(): array
{
return [
'dependencies' => $this->getDependencies(),
];
}
public function getDependencies(): array
{
return [
'factories' => [
ExampleService::class => \Dot\DependencyInjection\Factory\AttributedServiceFactory::class,
],
];
}
}