Zazwyczaj buforowałem w jakiejś zmiennej wszystkie komunikaty błędów a później ją wyświetlałem i czyściłem jej zawartość. To dziłało jak tymczasowy bufor zmiennej, działało naprawdę super

Później kiedy się dowiedziałem o funkcjach statycznych pisałem sobie taką funkcję:
<?php function ($error, $co) { if ($co == 'add') { $bledy .= '<li>'.$error.'</li>'; } elseif ($co == 'show') { $bledy = NULL; } } ?>
No i to sobie działało. Dziś chciałbym to samo zamknąć w klasie. Mam 5 klas, które mogą zwracać różne komunikaty błędów. Więc klasę "strona" zrobiłem jako singletone:
<?php /** * Konstruktor wywołuje singletone mysql-a. * Zabezpieczenie przed tworzeniem obiektów tej klasy. * * @access private */ protected function __construct() { } /** * Funkcja odopowiedzialna zazwracanie referencji do obiektu (singletone). * * @access public * @static * @return &singletone */ if (self::$singletone == NULL) { self::$singletone = new strona(); } return self::$singletone; } ?>
A metody odpowiedzialne za wszystko wyglądają tak:
<?php public function error($error) { $error = '<li>'.$error.'</li>'; $this->error .= $error; } public function show_error() { return $this->error; $this->error = NULL; self::$singletone->error = NULL; } ?>
I to :/ nie działa. To z tym slef dodałem, bo średnio qmam o co chodzi z tym self. W każdym bądź razie do klasy zupełnie innej w konstruktorze dodaje singletona klasy "strona". Obiekt się tworzy.Nie wiem o co dokładnie chodzi ale może powiem jaki jest efekt. Albo komunikat pojawia się dwa razy ! Albo raz, ale na pewno nie czyści się. To znaczy cały czas ten error jest mimo wyczyszczenia zmiennej do NULL.
Chodzi mi o to aby uzyskać efekt podobny jak sesja tylko, że w klasie. Czyli, żeby klasa nie gubiła wartości swoich zmiennych i była dostępna w innych klasach.