Ещё не мало важно, сами сущности отражают структуру ответа.
public function normalize($object, $format = null, array $context = [])
{
$content = $object->getContentForLocale($this->locale);
return [
'id' => $object->getId(),
'name' => $content->getName(),
'description' => $content->getDescription(),
];
}
class Article
{
private $id;
private $publishedAt;
private $slug;
/**
* @var Content[]
*/
private $contents;
public function getContentForLocale($locale)
{
foreach ($this->contents as $content) {
if ($locale === $content->getLocale()) {
return $content;
}
}
return null;
}
}
class Content
{
private $id;
private $article;
private $locale;
private $name;
private $description;
private $content;
}
чтобы искать альтернативу синглтону, нужно понять, что автора не устроило в синглтоне?
А с БД внезапно не сконнектились и вместо коннекшена у нас NULL
$builder->addDefinitions([
\PDO::class => function (\DI\Container $container) {
return new PDO(sprintf('mysql:dbname=%s;host=%s',
$container->get('db-name'),
$container->get('db-host')
), $container->get('db-username'), $container->get('db-password'));
},
]);
new PDO
вернет exception, если соединение установить не удалось. Тут поведение от singleton не отличается$builder->addDefinitions([
\PDO::class => function (\DI\Container $container) {
try {
return new PDO(sprintf('mysql:dbname=%s;host=%s',
$container->get('db-name'),
$container->get('db-host')
), $container->get('db-username'), $container->get('db-password'));
} catch (\PDOException $exception) {
return null;
}
},
]);
public function __construct(?\PDO $pdo)
{
$this->pdo = $pdo;
}
просто создать файлик и внести нужные данные?
В корне
public_html
А какие данные?
и это все таки написано на Slim?
$requestStack->getCurrentRequest()
- может быть null, аккуратней