mirror of
https://github.com/espocrm/espocrm.git
synced 2026-06-28 06:56:05 +00:00
40 lines
758 B
PHP
40 lines
758 B
PHP
<?php
|
|
|
|
namespace Espo\Core;
|
|
|
|
class ServiceFactory
|
|
{
|
|
|
|
private $container;
|
|
|
|
|
|
public function __construct(Container $container)
|
|
{
|
|
$this->container = $container;
|
|
|
|
}
|
|
|
|
protected function getCotainer()
|
|
{
|
|
return $this->container;
|
|
}
|
|
|
|
|
|
public function create($name)
|
|
{
|
|
// TODO lookup in metadata which module to use
|
|
$className = '\\Espo\\Services\\' . $name;
|
|
if (class_exists($className)) {
|
|
$service = new $className();
|
|
$dependencies = $service->dependencies;
|
|
foreach ($dependencies as $name) {
|
|
$setMethod = 'set' . ucfirst($name);
|
|
$service->$setMethod($this->getCotainer()->get($name));
|
|
}
|
|
return $service;
|
|
}
|
|
// TODO throw an exception
|
|
return null;
|
|
}
|
|
}
|