<?php class session { protected function first(){ } } protected function failed(){ } private function simple(){ if($_SESSION[self::$dsession]==$hash) return true; else return false; } else { $_SESSION[self::$dsession]=$hash; return true; } } private function advanced(){ return false; $_SESSION[self::$tsession]=$timestamp; return true; } $advanced_result=$advanced?self::advanced():true; if(!self::simple() || !$advanced_result) { self::failed(); return false; } else { return true; } } } ?>
No i oczywiście pojawiły się problemy. Miało to działać tak (jeżeli mój tok myślenia odbiega od OOP to proszę o wyjaśnienia):
- klasa miała być uniwersalna żeby łatwo mogła współpracować z klasą odpowiedzialną na przykład za obsługę użytkowników
- w przypadku wywołania przez session::start(true) dodatkowym zabezpieczeniem miało być sprawdzanie czasu wykonania ostatniego wyświetlenia strony przez użytkownika.
- metody next i first miały być przeznaczone do przesłaniania aby dało się na przykład łatwo wpleść licznik odwiedzin (z tego co czytałem wasze posty klasa powinna odpowiadać za jakąś warstwę aplikacji i stąd ten pomysł), failed też miała być do ewentualnego przesłonięcia, ponieważ nie do końca wiem jak się ma private do przesłonięcia są zdefiniowane jako protected.
Przy wywołaniu statycznym jednak przesłanianie metod nie działa, a jak na moją logikę tworzenie obiektu w tym przypadku jest marnotrastwem zasobów i rozwiązaniem mniej estetycznym.
Jak można to ominąć i czy jeśli chodzi o logikę OOP to popełniam jakieś błąd??