Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Interfejsy i związane z nimi wątpliwości., Dlaczego funkcje z interfejsu są public?
lolek09
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 30.05.2003
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Do tej pory nie używałem interfejsów nie widząc dla nich większego zastosowania, ale teraz nasunęła mi się sytuacja wręcz idealna do ich zastosowania. Niestety nie wszystko idzie tak jak trzeba, ale od początku.
Robię sobie systemik, który ma w zależności od wyboru użytkownika wyświetlać komunikaty w danym języku. I tak to stworzyłem sobie interfejs i18n, a w nim abstrakcyjną funkcję setLanguage. Ten interfejs służy do tego, żeby klasy które zawierają jakieś komunikaty dla użytkownika pobrały sobie odpowiednie komunikaty. Oczywiście każda klasa realizuje to na inny sposób (niektóre z jednego pliku wpisują komunikaty do tablicy, inne inaczej). W każdym razie setLanguage jest wywoływane tylko raz w konstruktorze, aby pobrać komunikaty. Dlaczego w takim razie jeśli deklaruje je jako public, to dostaję błąd:
Fatal error: Access level to MysqlDB::setLanguage() must be public (as in class i18n) in /var/www/lolek09/index.php on line 6
Jaka jest przyczyna tego, że metody z interfejsów są z zasady public (bo sądzę, że jakaś jest).
Poza tym, jeśli nie można tego zrobić z interfejsem, to jak?

----- edit -----

Właściwie to po długich rozmyślaniach i poszukiwaniach doszedłem do wniosku, że metody odziedziczone z interfejsu muszą być public, bo interfejs, to zbiór zachowań, które klasa zobowiązuje się dostarczyć, natomiast metody prywatne są po prostu częścią implementacji tych zachowań.
Sprostujcie, jeśli się mylę, sorry za zamieszanie.
Pozdrawiam
lolek09

Ten post edytował lolek09 11.08.2004, 07:27:03


--------------------
Chciałbyś zobaczyć program bez błędów? Wyobraź sobie UFO, w którym Elvis doi swojego jednorożca
Go to the top of the page
+Quote Post
Ozzy
post
Post #2





Grupa: Zarejestrowani
Postów: 204
Pomógł: 0
Dołączył: 26.12.2003
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Wymuszanie implementacji metod prywatnych nie miało by większego sensu, gdyż te mogą się zmieniać. Chodzi o to, że klasa, która używa klasy implementującej dany interfejs, ma pewność, że bez problemów będzie mogłą wywołać pewne metody publiczne.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 07:23