2016-10-14 03:30:05 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace SilverStripe\Core\Tests\Injector\InjectorTest;
|
|
|
|
|
2017-05-17 07:40:13 +02:00
|
|
|
use SilverStripe\Core\ClassInfo;
|
2016-10-14 03:30:05 +02:00
|
|
|
use SilverStripe\Core\Injector\InjectionCreator;
|
2017-05-17 07:40:13 +02:00
|
|
|
use SilverStripe\Core\Injector\Injector;
|
|
|
|
use SilverStripe\Dev\TestOnly;
|
2016-10-14 03:30:05 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* An example object creator that uses the SilverStripe class(arguments) mechanism for
|
|
|
|
* creating new objects
|
|
|
|
*
|
|
|
|
* @see https://github.com/silverstripe/sapphire
|
|
|
|
*/
|
2017-05-17 07:40:13 +02:00
|
|
|
class SSObjectCreator extends InjectionCreator implements TestOnly
|
2016-10-14 03:30:05 +02:00
|
|
|
{
|
2017-05-17 07:40:13 +02:00
|
|
|
/**
|
|
|
|
* @var Injector
|
|
|
|
*/
|
2016-12-16 05:34:21 +01:00
|
|
|
private $injector;
|
2016-10-14 03:30:05 +02:00
|
|
|
|
2016-12-16 05:34:21 +01:00
|
|
|
public function __construct($injector)
|
|
|
|
{
|
|
|
|
$this->injector = $injector;
|
|
|
|
}
|
2016-10-14 03:30:05 +02:00
|
|
|
|
2020-04-20 19:58:09 +02:00
|
|
|
public function create($class, array $params = [])
|
2016-12-16 05:34:21 +01:00
|
|
|
{
|
2022-04-14 03:12:59 +02:00
|
|
|
if (strpos($class ?? '', '(') === false) {
|
2016-12-16 05:34:21 +01:00
|
|
|
return parent::create($class, $params);
|
|
|
|
} else {
|
2017-05-17 07:40:13 +02:00
|
|
|
list($class, $params) = ClassInfo::parse_class_spec($class);
|
2016-12-16 05:34:21 +01:00
|
|
|
$params = $this->injector->convertServiceProperty($params);
|
|
|
|
return parent::create($class, $params);
|
|
|
|
}
|
|
|
|
}
|
2016-10-14 03:30:05 +02:00
|
|
|
}
|