Hallo,
ich bin gerade dabei mich intensiver mit dem Thema der Design Pattern zu beschäftigen und wollte mal fragen ob meine Klassen richtig sind. Ich weiss nicht ob das Design Pattern wirklich "Driver" heisst, aber ich hoffe Ihr könnt mir das sagen. Was ich wissen möchte:
1. Ist das Pattern richtig und "schön" umgesetzt?
2. Wie bekomme ich es hin das der richtige "Handler" geladen wird? In der Session.php steht fest drin "\Dispendium\Session\FileSessionHandler". Dort muss ich aber basierend auf "self :: $strDriverName die richtige Klasse laden können.
Als Test erstelle ich gerade eine Session Klasse die entweder die nativen Funktionen nutzt oder die Sessions in der Datenbank speichert.
index.php
Session.php
FileSessionHandler.php
ich bin gerade dabei mich intensiver mit dem Thema der Design Pattern zu beschäftigen und wollte mal fragen ob meine Klassen richtig sind. Ich weiss nicht ob das Design Pattern wirklich "Driver" heisst, aber ich hoffe Ihr könnt mir das sagen. Was ich wissen möchte:
1. Ist das Pattern richtig und "schön" umgesetzt?
2. Wie bekomme ich es hin das der richtige "Handler" geladen wird? In der Session.php steht fest drin "\Dispendium\Session\FileSessionHandler". Dort muss ich aber basierend auf "self :: $strDriverName die richtige Klasse laden können.
Als Test erstelle ich gerade eine Session Klasse die entweder die nativen Funktionen nutzt oder die Sessions in der Datenbank speichert.
index.php
PHP-Code:
<?php
use Dispendium\Session\Session;
require_once 'dispendium/session/Session.php';
require_once 'dispendium/session/FileSessionHandler.php';
require_once 'dispendium/session/DatabaseSessionHandler.php';
Session :: setHandler('file');
Session :: get('1');
?>
PHP-Code:
<?php
namespace Dispendium\Session;
class Session
{
private static $objSessionHandler;
private static $strDriverName;
public final static function __callStatic($strMethod, array $arrParameter)
{
if (is_object(self :: $objSessionHandler) === false)
{
self :: $objSessionHandler = new \Dispendium\Session\FileSessionHandler(); <- siehe Frage 2
}
return (call_user_func_array(array(self :: $objSessionHandler, $strMethod), $arrParameter));
}
public final static function setHandler($strDriverName)
{
self :: $strDriverName = $strDriverName;
}
}
?>
PHP-Code:
<?php
namespace Dispendium\Session;
class FileSessionHandler
{
public final function __construct()
{
session_start();
}
public final function get()
{
var_dump('file handler!');
}
}
?>
Kommentar