added more classes
This commit is contained in:
parent
7160fd0804
commit
54ecb6b15e
|
@ -1,29 +1,62 @@
|
||||||
<?php
|
<?php
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022. Micha Espey <tracer@24unix.net>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
namespace App\Service;
|
namespace App\Service;
|
||||||
|
|
||||||
use App\Controller\AddressBook;
|
use App\Controller\AddressBookAdminController;
|
||||||
|
use App\Controller\AddressBookController;
|
||||||
|
use App\Controller\SecurityController;
|
||||||
|
use App\Entity\User;
|
||||||
|
use App\Repository\UserRepository;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A quick and dirty class container for DI.
|
||||||
|
* Caveat: Classes are always instantiated
|
||||||
|
* No autowiring (yet, maybe later, but it might fit for a demo)
|
||||||
|
*/
|
||||||
|
|
||||||
class Container
|
class Container
|
||||||
{
|
{
|
||||||
// caveat: Classes are always instantiated
|
|
||||||
// No autowiring (yet, maybe later, but it might fit for a demo)
|
|
||||||
|
|
||||||
private Template $template;
|
private AddressBookController $addressBook;
|
||||||
private AddressBook $addressBook;
|
private AddressBookAdminController $addressBookAdmin;
|
||||||
|
private Config $config;
|
||||||
|
private DatabaseConnection $databaseConnection;
|
||||||
private Router $router;
|
private Router $router;
|
||||||
|
private SecurityController $securityController;
|
||||||
|
private Template $template;
|
||||||
|
private User $user;
|
||||||
|
private UserRepository $userRepository;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
|
$this->config = new Config();
|
||||||
|
$this->databaseConnection = new DatabaseConnection(config: $this->config);
|
||||||
$this->template = new Template(templateDir: dirname(path: __DIR__, levels: 2) . '/templates/');
|
$this->template = new Template(templateDir: dirname(path: __DIR__, levels: 2) . '/templates/');
|
||||||
$this->addressBook = new AddressBook(template: $this->template);
|
$this->router = new Router(template: $this->template);
|
||||||
$this->router = new Router();
|
$this->userRepository = new UserRepository(databaseConnection: $this->databaseConnection);
|
||||||
|
$this->securityController = new SecurityController(template: $this->template, userRepository: $this->userRepository, router: $this->router);
|
||||||
|
if (empty($_SESSION['user_id'])) {
|
||||||
|
$this->user = new User(); // ANONYMOUS
|
||||||
|
} else {
|
||||||
|
$this->user = $this->userRepository->findByID(id: $_SESSION['user_id']);
|
||||||
|
}
|
||||||
|
$this->addressBook = new AddressBookController(template: $this->template, user: $this->user, userRepository: $this->userRepository, router: $this->router);
|
||||||
|
$this->addressBookAdmin = new AddressBookAdminController(template: $this->template, user: $this->user, userRepository: $this->userRepository, router: $this->router);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get(string $className): object
|
public function get(string $className): object
|
||||||
{
|
{
|
||||||
return match ($className) {
|
return match ($className) {
|
||||||
'App\Controller\AddressBook' => $this->addressBook,
|
'App\Controller\AddressBookController' => $this->addressBook,
|
||||||
|
'App\Controller\AddressBookAdminController' => $this->addressBookAdmin,
|
||||||
|
'App\Controller\SecurityController' => $this->securityController,
|
||||||
'App\Service\Router' => $this->router,
|
'App\Service\Router' => $this->router,
|
||||||
//default => throw new Exception(message: "Missing class definition: $class")
|
//default => throw new Exception(message: "Missing class definition: $class")
|
||||||
default => die("Missing class definition: $className")
|
default => die("Missing class definition: $className")
|
||||||
|
|
Loading…
Reference in New Issue