PHP Classes

Is it possible to return cocncrete classes based on interface ?

Recommend this page to a friend!

      PHP Auto Dependency Injection  >  All threads  >  Is it possible to return cocncrete...  >  (Un) Subscribe thread alerts  
Subject:Is it possible to return cocncrete...
Summary:DI should work on abstractions not implementations
Messages:2
Author:Michal Kowalik
Date:2016-03-14 17:09:56
 

  1. Is it possible to return cocncrete...   Reply   Report abuse  
Picture of Michal Kowalik Michal Kowalik - 2016-03-14 17:09:56
Is this scenario somehow possible:

=== SomeClassInterface.php

interface SomeClassInterface { }

=== SomeClassConcrete.php

/**
* Used in production
*/
class SomeClassConcrete implements SomeClassInterface { }

=== SomeClassConcreteDev.php

/**
* Used in dev and / or test
*/
class SomeClassConcreteDev implements SomeClassInterface { }

=== diconfig-prod.php

return [
SomeClassInterface::class => SomeClassConcrete::class
];

=== diconfig-test.php

return [
SomeClassInterface::class => SomeClassConcreteDev::class
];

=== diconfig-dev.php

return [
SomeClassInterface::class => SomeClassConcreteDev::class
];

=== example.php

AutoDi::configure('diconfig-' . ($_SERVER['THE_ENV'] ?? 'dev') . '.php');

$someObject = AutoDi::getInstance(SomeClassInterface::class);

  2. Re: Is it possible to return cocncrete...   Reply   Report abuse  
Picture of Aleksandar Zivanovic Aleksandar Zivanovic - 2016-03-17 14:58:42 - In reply to message 1 from Michal Kowalik
Thanks for idea, I'll certainly implement this feature in next version.