случайный класс не может просто вызвать $this->getDoctrine()
внутри своих методов и ожидать получить какой-либо объект. Как бы PHP теперь откуда это взять? Как можно предположить, что проверка / отражение кода предполагает, как getDoctrine
должно быть определено?
Вместо этого вы должны вставить EntityManagerInterface
в конструктор, потому что таким образом Symfony (каркас) и его автоматическое подключение могут разумно идентифицировать ожидаемый параметр для вашего сервиса, и подсказка типа скажет ему, что вводить:
<?php
namespace App\Service;
use Doctrine
use Doctrine\ORM\EntityManagerInterface;
class Websitesettings
{
/** @var EntityManagerInterface */
public $em;
public function __construct(EntityManagerInterface $em) {
$this->em = $em;
}
public function setting()
{
$setting = $this->em->getRepository(Sitesetting::class)
->findAll()[0];
return $setting;
}
}
Надеюсь, это поможет.
Однако основной вопрос: вы уверены, что это лучший способ сделать это? Очевидно, у вас есть целая таблица, посвященная настройкам вашего сайта, и, видимо, она содержит только одну строку (что довольно печально). У Yaml и Symfony есть несколько очень полезных функций, с помощью которых вы можете предоставить определенные параметры в самой конфигурации или через переменные окружения. Но это выходит за рамки вопроса.