Wpis z mikrobloga

#programowanie #php Mirki mam zadanie stworzyć dwie klasy obsługujące mechanizm obsługi sesji i za pomocą ustawień użytkownika w pliku konfiguracyjnym wybierać odpowiedni mechanizm (pliki/baza danych). ogarnąłem coś takiego ale pewnie to jest bardzo #!$%@? rozwiązanie ( ͡° ʖ̯ ͡°). Proszę o pomoc :(
  • 4
@TurboTapir: Możesz sobie zrobić jakiś plik z konfiguracją, gdzie zaznaczysz która klasa jest do czego. I te drivery niech implementują wspólny interfejs.
I załóżmy, że robisz coś takiego:
$session = new SessionHandler(SessionDriver::factory($config->getDriverClass()));
I tym sposobem pozbywasz się raka z kodu.
@panjerzyduzomierzy: Dzięki. postanowiłem zrobić to tak jak powiedziałeś. czyli intrerfejs teraz w mojej klasie wygląda to tak

function __construct(SessionDriver $storageDriver)
{
$this->driver=$storageDriver;

session_set_save_handler(
array($this->driver, 'open'),
array($this->driver, 'close'),
array($this->driver, 'read'),
array($this->driver, 'write'),
array($this->driver, 'destroy'),
array($this->driver, 'gc')
);

}

Ale zamiast takiego czegoś $session = new SessionHandler(SessionDriver::factory($config->getDriverClass()));

postanowiłem stworzyć kontener :

class App
{

private $storageDriver = null;

public function __construct()
{
$SessionDriverClass=SESSION_DRIVER;
$this->storageDriver = new SessionHandler(new $SessionDriverClass());
}

/**
* @return null|SESSION_DRIVER