<?php
namespace XF\Service;
use function call_user_func_array, func_get_args;
abstract class AbstractService
{
/**
* @var \XF\App
*/
protected $app;
public function __construct(\XF\App $app)
{
$this->app = $app;
$this->setup();
}
protected function setup()
{
}
/**
* @return \XF\Db\AbstractAdapter
*/
protected function db()
{
return $this->app->db();
}
/**
* @return \XF\Mvc\Entity\Manager
*/
protected function em()
{
return $this->app->em();
}
/**
* @param string $repository
*
* @return \XF\Mvc\Entity\Repository
*/
protected function repository($repository)
{
return $this->app->repository($repository);
}
/**
* @param $finder
*
* @return \XF\Mvc\Entity\Finder
*/
protected function finder($finder)
{
return $this->app->finder($finder);
}
/**
* @param string $finder
* @param array $where
* @param string|array $with
*
* @return null|\XF\Mvc\Entity\Entity
*/
protected function findOne($finder, array $where, $with = null)
{
return $this->app->em()->findOne($finder, $where, $with);
}
/**
* @param string $class
*
* @return \XF\Service\AbstractService
*/
public function service($class)
{
return call_user_func_array([$this->app, 'service'], func_get_args());
}
}