mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-09-19 16:06:32 +02:00
39 lines
1010 B
PHP
39 lines
1010 B
PHP
<?php
|
|
|
|
namespace SilverStripe\Core\Tests\Injector\InjectorTest;
|
|
|
|
use SilverStripe\Core\ClassInfo;
|
|
use SilverStripe\Core\Injector\InjectionCreator;
|
|
use SilverStripe\Core\Injector\Injector;
|
|
use SilverStripe\Dev\TestOnly;
|
|
|
|
/**
|
|
* An example object creator that uses the SilverStripe class(arguments) mechanism for
|
|
* creating new objects
|
|
*
|
|
* @see https://github.com/silverstripe/sapphire
|
|
*/
|
|
class SSObjectCreator extends InjectionCreator implements TestOnly
|
|
{
|
|
/**
|
|
* @var Injector
|
|
*/
|
|
private $injector;
|
|
|
|
public function __construct($injector)
|
|
{
|
|
$this->injector = $injector;
|
|
}
|
|
|
|
public function create($class, array $params = [])
|
|
{
|
|
if (strpos($class ?? '', '(') === false) {
|
|
return parent::create($class, $params);
|
|
} else {
|
|
list($class, $params) = ClassInfo::parse_class_spec($class);
|
|
$params = $this->injector->convertServiceProperty($params);
|
|
return parent::create($class, $params);
|
|
}
|
|
}
|
|
}
|