Create a simple service
Also includes dependency injection
MY_MODULE.services.yml
services:
my_module.cool_service:
class: Drupal\my_module\Services\CoolService
arguments: ['@logger.factory']
/src/Services/CoolService.php
<?php
namespace Drupal\my_module\Services;
use Drupal\Core\Logger\LoggerChannelFactoryInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* CoolService returns what you give it in an array.
*/
class CoolService {
/**
* Logger Factory.
*
* @var \Drupal\Core\Logger\LoggerChannelFactoryInterface
*/
protected $loggerFactory;
/**
* Constructs the Cool service.
*
* @param \Drupal\Core\Logger\LoggerChannelFactoryInterface $loggerFactory
* A Guzzle client object.
*/
public function __construct(LoggerChannelFactoryInterface $loggerFactory) {
$this->loggerFactory = $loggerFactory->get('my_module');
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('logger.factory')
);
}
public function doSomething($someData) {
$output = [
'my_data' => $someData;
];
$this->loggerFactory->error('Lets log a message!');
return $output;
}
}
Calling the service
$coolService = \Drupal::service('my_module.cool_service');
$returnedData = $coolService->doSomething('My Data');
echo $returnedData;