НА
Size: a a a
НА
К
x
PC
x
D
PC
DM
꧁S
DM
DM
PC
PC
DM
DM
AS
<?php
namespace App\Traits;
use Exception;
use ReflectionClass;
use ReflectionException;
trait HasService
{
/**
* @return object
* @throws Exception
*/
public static function service(): object
{
$fullClassName = static::getFullClassName();
return static::newServiceInstance($fullClassName);
}
/**
* @return string
*/
public static function getFullClassName(): string
{
$subjectName = (new ReflectionClass(static::class))->getShortName();
return "App\Service\\{$subjectName}Service";
}
/**
* @param $fullClassName
* @return object
* @throws ReflectionException
* @throws Exception
*/
public static function newServiceInstance($fullClassName): object
{
if (!class_exists($fullClassName)) {
throw new Exception("Class $fullClassName not found!");
}
return (new ReflectionClass($fullClassName))->newInstance();
}
}
PC
AS
PC
AS