Add appConfig to container

diff --git a/public/index.php b/public/index.php
index 78fef51..e15604b 100644
--- a/public/index.php
+++ b/public/index.php
@@ -8,8 +8,7 @@ error_reporting(E_ALL);

 use App\Kernel;

-require_once dirname(__DIR__).'/vendor/autoload.php';
+require_once dirname(__DIR__) . '/vendor/autoload.php';

-$kernel = new Kernel();
-
-$kernel();
\ No newline at end of file
+$kernel = new Kernel(__DIR__ . '/../app');
+$kernel->run();
\ No newline at end of file
diff --git a/src/AppConfig.php b/src/AppConfig.php
new file mode 100644
index 0000000..bcf0ee6
--- /dev/null
+++ b/src/AppConfig.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Ardent\Undercurrent;
+
+class AppConfig
+{
+    public function __construct(
+        private readonly string $rootPath,
+    )
+    {
+    }
+
+    public function getRootPath(): string
+    {
+        return $this->rootPath;
+    }
+}
\ No newline at end of file
diff --git a/src/Kernel/BaseKernel.php b/src/Kernel/BaseKernel.php
index 60164d8..c27f49a 100644
--- a/src/Kernel/BaseKernel.php
+++ b/src/Kernel/BaseKernel.php
@@ -2,6 +2,7 @@

 namespace Ardent\Undercurrent\Kernel;

+use Ardent\Undercurrent\AppConfig;
 use Ardent\Undercurrent\Container\ContainerInterface;
 use Ardent\Undercurrent\Container\GenericContainer;
 use Ardent\Undercurrent\Http\GenericRequest;
@@ -13,18 +14,26 @@ use Ardent\Undercurrent\Http\RouterInterface;
 use Ardent\Undercurrent\Http\StatusEnum;
 use Ardent\Undercurrent\Logger\LogContainer;
 use Ardent\Undercurrent\Logger\LoggerInterface;
-use Exception;

 class BaseKernel
 {
-    public function __invoke(): void
+    public function __construct(
+        private readonly string $rootDirectory,
+    )
     {
+    }
+
+    public function run(): void
+    {
+        $appConfig = new AppConfig($this->rootDirectory);
+
         $container = (new GenericContainer());
         $container
             ->alias(RouterInterface::class, GenericRouter::class)
             ->alias(ContainerInterface::class, GenericContainer::class)
             ->alias(LoggerInterface::class, LogContainer::class)
             ->add(GenericContainer::class, fn($container) => $container)
+            ->add(AppConfig::class, fn() => $appConfig)
             ->add(GenericRouter::class)
             ->add(LogContainer::class);
This commit is contained in:
Tim 2023-08-15 02:16:12 +02:00
parent 1aded029fc
commit 9b8985640c
3 changed files with 31 additions and 6 deletions

View File

@ -8,8 +8,7 @@ error_reporting(E_ALL);
use App\Kernel; use App\Kernel;
require_once dirname(__DIR__).'/vendor/autoload.php'; require_once dirname(__DIR__) . '/vendor/autoload.php';
$kernel = new Kernel(); $kernel = new Kernel(__DIR__ . '/../app');
$kernel->run();
$kernel();

17
src/AppConfig.php Normal file
View File

@ -0,0 +1,17 @@
<?php
namespace Ardent\Undercurrent;
class AppConfig
{
public function __construct(
private readonly string $rootPath,
)
{
}
public function getRootPath(): string
{
return $this->rootPath;
}
}

View File

@ -2,6 +2,7 @@
namespace Ardent\Undercurrent\Kernel; namespace Ardent\Undercurrent\Kernel;
use Ardent\Undercurrent\AppConfig;
use Ardent\Undercurrent\Container\ContainerInterface; use Ardent\Undercurrent\Container\ContainerInterface;
use Ardent\Undercurrent\Container\GenericContainer; use Ardent\Undercurrent\Container\GenericContainer;
use Ardent\Undercurrent\Http\GenericRequest; use Ardent\Undercurrent\Http\GenericRequest;
@ -13,18 +14,26 @@ use Ardent\Undercurrent\Http\RouterInterface;
use Ardent\Undercurrent\Http\StatusEnum; use Ardent\Undercurrent\Http\StatusEnum;
use Ardent\Undercurrent\Logger\LogContainer; use Ardent\Undercurrent\Logger\LogContainer;
use Ardent\Undercurrent\Logger\LoggerInterface; use Ardent\Undercurrent\Logger\LoggerInterface;
use Exception;
class BaseKernel class BaseKernel
{ {
public function __invoke(): void public function __construct(
private readonly string $rootDirectory,
)
{ {
}
public function run(): void
{
$appConfig = new AppConfig($this->rootDirectory);
$container = (new GenericContainer()); $container = (new GenericContainer());
$container $container
->alias(RouterInterface::class, GenericRouter::class) ->alias(RouterInterface::class, GenericRouter::class)
->alias(ContainerInterface::class, GenericContainer::class) ->alias(ContainerInterface::class, GenericContainer::class)
->alias(LoggerInterface::class, LogContainer::class) ->alias(LoggerInterface::class, LogContainer::class)
->add(GenericContainer::class, fn($container) => $container) ->add(GenericContainer::class, fn($container) => $container)
->add(AppConfig::class, fn() => $appConfig)
->add(GenericRouter::class) ->add(GenericRouter::class)
->add(LogContainer::class); ->add(LogContainer::class);