![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, przeczytałem zawartość działu OOP na temat klasa abstrakcyjna + interfejs. Jednak w większości nie był poruszany temat metod statycznych, a tym bardziej singletona.
Zaplanowałem sobie taki mały systemik logowań zdarzeń. Chciałem oprzeć go o klase abstrakcyjną + interfejs, a przy okazji chciałem użyć do tego celu singletona, aby późniejsze wywołanie mogło sprowadzić się do:
Oto co próbowałem zrobić, jednak to nie działa, dostaję błąd: Kod Fatal error: Can't inherit abstract function logInterface::write() (previously declared abstract in log) in C:\xampp\htdocs\test.php on line 10
Myślałem o przeniesieniu metody write() do klasy abstrakcyjnej log, zrobienie z niej static (czyt final static) Ewentualnie mógłbym zrobić w każdej metodzie error, warning, notice odwoływanie się do singletona tak, żeby użycie uprościć do
Macie jakieś pomysły jak to rozwiązać? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
@Crozin dzięki wielkie za zainteresowanie.
Chcę zrobić dość uniwersalny system logów, będzie wykorzystywany moduł plikowy, jak id db, dlatego chciałem mieć to razem, z możliwością łatwego przełączania. Na razie bardziej zamiennie, ale z czasem może mi się coś odmienić. Poza tym zawsze przyda się mała wprawka bardziej obiektowego php (IMG:style_emoticons/default/winksmiley.jpg) Zrobiłem 3 metody zapisywania, aby później skrócić użycie. Co prawda zastanawiałem się też nad jedną metodą z flagami - w poprzedniej klasie logów tak miałem, jednak czasem zdarzało mi się niechcący wybrać nie tą flagę (wtedy jeszcze miałem 2 binarnie: 0 i 1). Później w podglądzie logów miałem nieodpowiednie kolorowanie. Teraz chcę po prostu sprawdzić inny sposób, zobaczyć jak to się będzie sprawdzało. Ta wersja wydaje się być wygodniejsza, szybciej i jaśniej jest napisać
Rozbudowy, czy dodatkowego rozszerzania tych klas, za bardzo nie widzę. Nawet jeśli, to zawsze można zedytować jedną klasę abstrakcyją i powinno bez problemu działać. Zdaję sobie sprawę, że jest to trochę przerost formy nad treścią, ale nie raz się robi coś nieekonomicznego dla wygody:) Przewiduję, że te 3 metody będą odwoływały się do wspólnej jednej prywatnej, z tą tylko różnicą, że będą ustawiać inną flagę. Czyli zamiast trzech flag i jednej metody, są trzy metody (może 4) i nie ma flag (IMG:style_emoticons/default/biggrin.gif) Mam nadzieję, że będzie się później tego wygodniej używało (IMG:style_emoticons/default/winksmiley.jpg) A jeśli nie, to skorzystam z Twojego schematu (IMG:style_emoticons/default/smile.gif) Pozdrawiam, i dziękuję za pomoc (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 21:42 |