Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wymuszenie zasięgu widoczności metody
Forum PHP.pl > Forum > PHP > Object-oriented programming
batman
Czy jest możliwość wymuszenia konkretnego zasięgu widoczności metody?

  1. <?php
  2. abstract class Foo
  3. {
  4. abstract protected function Metoda();
  5. }
  6.  
  7. class Bar extends Foo
  8. {
  9. protected function Metoda() {
  10. // cialo metody
  11. }
  12. }
  13. ?>

W powyższym przykładzie można zmienić w klasie Bar widoczność metody na public, a mi zależy, by została ona protected. Czy jest możliwość, by to osiągnąć?
dr_bonzo
Nie.

Cytat
PHP Fatal error: Access level to Bar::Metoda() must be protected (as in class Foo) or weaker in


gdy dalem w Bar: private function... , wiec wszystko jasne. Z reszta po co ci takie rozwiazanie?
athabus
Metodę zawsze można w klasach potomnych zmienić na "bardziej widoczną" - w drugą stronę się nie da ponieważ to stawiałoby znak zapytania nad sensem OOP. Można zabronić redefiniowania metod w klasach potomnych, ale raczej nie można zablokować widoczności metody -> czyli np. nie można zabronić zmiany widoczności z protected na public.
batman
Wiem jak to działa, więc nie potrzebuję teorii winksmiley.jpg
Potrzebuję tego do frameworka, gdzie chcę wymusić, by pewne klasy miały metody o widoczności tylko protected.
dr_bonzo
batman: a jak nie beda mialy to co sie stanie?
batman
Wielka krzywda się nie stanie winksmiley.jpg
Potrzebuję tego, by rozwiązanie było eleganckie. Jednak skoro nie ma takiej możliwości, to mówi się trudno.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.