12. interface ExtensionManagerInterface
{
function checkExtension($fileName);
}
class ExtensionManager implements ExtensionManagerInterface
{
public function checkExtension($fileName)
{
//Some complex business logic might goes here. May be DB operation or file system handling
return false;
}
}
class FileChecker
{
private $objManager = null;
//Default constructor
function __construct()
{
$this->objManager = new ExtensionManager();
}
//Parameterized constructor
function __construct(ExtensionManagerInterface $tmpManager)
{
$this->objManager = $tmpManager;
}
public function checkFile($fileName)
{
//Check file size, file name length,...
return $this->objManager->checkExtension($fileName);
}
}
13. //Stub implementation to bypass actual Extension manager class.
class StubExtensionManager implements ExtensionManagerInterface
{
public function checkExtension($fileName)
{
return true;
}
}
public function testCheckFileFunction()
{
$stubExtensionManagerObject = new StubExtensionManager;
$fileCheckerObject = new FileChecker($stubExtensionManagerObject);
$this->assertTrue($fileCheckerObject->checkFile('framgia.com'));
}