Chciałem zrobić odwołania do modelu podobnie, jak jest w Symfony. Np. coś w tym stylu:
Kod
$sr = $model->getRepository('Site');
$sr->setMethod($id, $varible);
Ale właśnie zauważyłem, że to nie jest najlepsze rozwiązanie. W Symfony jest używany menadżer:
Kod
$em = $this->getDoctrine()->getManager();
$em->getRepository('App:Site')->setMethod($id, $varible);
Chodzi mi o to, aby nie wstrzykiwać do kontrolera kilku obiektów z repozytoriami (np. dla UserRepository, SiteRepository oddzielnie), ale aby to zrobić uniwersalnie. Tworzyć jeden obiekt (np. w index.php). Połączyć się z bazą. Wstrzyknąć go do kontrolera i potem używać tego repozytorium, które jest mi akurat potrzebne. Jednak widzę, że tak tego nie zrobię. Prosiłbym o sugestie, jak to zrobić lepiej.

Podobnie planuję postępować z kontrolerami. W index.php, na podstawie parametru z .htaccess, tworzyć uniwersalnie obiekt kontrolera, który jest mi akurat potrzebny. Przekazywać mu metodą obiekt mojego modelu, tablicę wyników z formularza i sesję.
Ok. Wersje robocze klas wyglądają na chwilę obecną tak:
Kod
<?php
declare(strict_types=1);
namespace App\Core;
use App\Core\Model;
class Controller
{
public function getManager(): object
{
$model = new Model();
$model->dbConnect();
return $model;
}
}
Kod
<?php
declare(strict_types=1);
namespace App\Core;
use App\Core\DataBase;
class Model extends DataBase
{
public function getRepository(string $name): object
{
$class = $name . 'Repository';
return new $class;
}
}
Kontrolery mają rozszerzać klasę Controller. Przykładowe użycie:
Kod
$mm = $this->getManager();
$mm->getRepository('Site')->setMethod($id, $variable);
$variable = $mm->getRepository('Site')->getMethod($id);
Może tak pozostać? Prosiłbym o ocenę kodu i uwagi.

PS Właśnie zauważyłem, że jest jeszcze jedne problem. Da się użyć jakiegoś uniwersalnego "use" dla moich klas z repozytorium? Bo teraz wywali błąd...