403Webshell
Server IP : 65.108.144.40  /  Your IP : 216.73.217.165
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux ubuntu-8gb-hel1-1 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64
User : dev ( 1000)
PHP Version : 8.2.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/html/project-slim/app/Container/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/project-slim/app/Container/ServiceContainer.php
<?php

namespace App\Container;

use DI\Container;
use DI\ContainerBuilder;
use App\Repositories\Interfaces\UserRepositoryInterface;
use App\Repositories\Interfaces\CompanyRepositoryInterface;
use App\Repositories\Interfaces\ReportRepositoryInterface;
use App\Repositories\UserRepository;
use App\Repositories\CompanyRepository;
use App\Repositories\ReportRepository;
use App\Services\AuthService;
use App\Services\UserService;
use App\Services\CompanyService;
use App\Services\ReportService;
use App\Validators\AuthValidator;
use App\Validators\UserValidator;
use App\Validators\CompanyValidator;
use App\Validators\ReportValidator;

class ServiceContainer
{
    private static ?Container $container = null;

    /**
     * Get or create the container instance
     */
    public static function getInstance(): Container
    {
        if (self::$container === null) {
            self::$container = self::build();
        }

        return self::$container;
    }

    /**
     * Build the dependency injection container
     */
    private static function build(): Container
    {
        $builder = new ContainerBuilder();
        
        // Get JWT settings
        $jwtSettings = [
            'secret' => $_ENV['JWT_SECRET'] ?? 'your-secret-key',
            'algorithm' => $_ENV['JWT_ALGORITHM'] ?? 'HS256',
            'expiry' => (int)($_ENV['JWT_EXPIRE_TIME'] ?? 3600),
            'refresh_expiry' => (int)($_ENV['JWT_REFRESH_EXPIRE_TIME'] ?? 604800),
        ];
        
        // Repository bindings
        $builder->addDefinitions([
            UserRepositoryInterface::class => \DI\autowire(UserRepository::class),
            CompanyRepositoryInterface::class => \DI\autowire(CompanyRepository::class),
            ReportRepositoryInterface::class => \DI\autowire(ReportRepository::class),
        ]);

        // Service bindings
        $builder->addDefinitions([
            AuthService::class => \DI\create(AuthService::class)
                ->constructor(
                    \DI\get(UserRepositoryInterface::class),
                    $jwtSettings
                ),
            UserService::class => \DI\autowire(UserService::class),
            CompanyService::class => \DI\autowire(CompanyService::class),
            ReportService::class => \DI\autowire(ReportService::class),
        ]);

        // Validator bindings
        $builder->addDefinitions([
            AuthValidator::class => \DI\autowire(AuthValidator::class),
            UserValidator::class => \DI\autowire(UserValidator::class),
            CompanyValidator::class => \DI\autowire(CompanyValidator::class),
            ReportValidator::class => \DI\autowire(ReportValidator::class),
        ]);

        return $builder->build();
    }

    /**
     * Get a service from the container
     */
    public static function get(string $id)
    {
        return self::getInstance()->get($id);
    }

    /**
     * Check if a service exists in the container
     */
    public static function has(string $id): bool
    {
        return self::getInstance()->has($id);
    }

    /**
     * Set a service in the container
     */
    public static function set(string $id, $value): void
    {
        self::getInstance()->set($id, $value);
    }

    /**
     * Register services in a DI container builder
     */
    public static function registerServices(ContainerBuilder $builder): void
    {
        // Get JWT settings
        $jwtSettings = [
            'secret' => $_ENV['JWT_SECRET'] ?? 'your-secret-key',
            'algorithm' => $_ENV['JWT_ALGORITHM'] ?? 'HS256',
            'expiry' => (int)($_ENV['JWT_EXPIRE_TIME'] ?? 3600),
            'refresh_expiry' => (int)($_ENV['JWT_REFRESH_EXPIRE_TIME'] ?? 604800),
        ];
        
        // Repository bindings
        $builder->addDefinitions([
            UserRepositoryInterface::class => \DI\autowire(UserRepository::class),
            CompanyRepositoryInterface::class => \DI\autowire(CompanyRepository::class),
            ReportRepositoryInterface::class => \DI\autowire(ReportRepository::class),
        ]);

        // Service bindings
        $builder->addDefinitions([
            AuthService::class => \DI\create(AuthService::class)
                ->constructor(
                    \DI\get(UserRepositoryInterface::class),
                    $jwtSettings
                ),
            UserService::class => \DI\autowire(UserService::class),
            CompanyService::class => \DI\autowire(CompanyService::class),
            ReportService::class => \DI\autowire(ReportService::class),
        ]);

        // Validator bindings
        $builder->addDefinitions([
            AuthValidator::class => \DI\autowire(AuthValidator::class),
            UserValidator::class => \DI\autowire(UserValidator::class),
            CompanyValidator::class => \DI\autowire(CompanyValidator::class),
            ReportValidator::class => \DI\autowire(ReportValidator::class),
        ]);
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit