Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Zmienna protected, Dlaczego jest do niej dostęp?
michail_w
post 13.07.2012, 14:37:15
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 18.10.2009

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


Witam, mam sobie taką oto klasę:
  1. class Grid
  2. {
  3. const DEFAULT_GRID_PAGE_SIZE = 10;
  4. protected $paginator = null;
  5. public function __construct($data){
  6. $this->paginator=new Zend_Paginator($data)
  7. }
  8. }

Oczywiście klasa jest bardziej rozbudowana.

Teraz z zewnątrz wywołuję coś takiego:
  1. $list=new Grid($dane);
  2. $result=$list->paginator->getCurrentItem();

To co jest dla mnie zaskoczeniem, że kod się wykonuje, pomimo że zmienna paginator jest protected i zwraca wynik. Ktoś jest w stanie mi wytłumaczyć dlaczego?

Ten post edytował michail_w 13.07.2012, 15:04:41
Go to the top of the page
+Quote Post
Crozin
post 13.07.2012, 15:29:29
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Kod ten się nie wykona - tutaj potwierdzenie na żywo: http://ideone.com/M7rMH
Co innego gdy kod jest jednak umieszczony wewnątrz klasy Grid, wtedy zadziała, ponieważ kod jest w zasięgu "protected" - http://ideone.com/fA64A
Go to the top of the page
+Quote Post
michail_w
post 13.07.2012, 16:18:07
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 18.10.2009

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


Ok, wiem że to niewiarygodne, ale to działa. Nie chcę żeby tak było.
Gdzie mogę szukać przyczyn?
Go to the top of the page
+Quote Post
Crozin
post 13.07.2012, 16:19:33
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Ale co działa? Nic w tej kwestii nie zmienisz - tak jest zaprojektowany język i tyle.
Go to the top of the page
+Quote Post
Mephistofeles
post 13.07.2012, 16:47:13
Post #5





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Działa, czy tylko nie wyrzuca błędów? Bo jak to drugie to włącz wyświetlanie tongue.gif.
Go to the top of the page
+Quote Post
irmidjusz
post 13.07.2012, 19:26:59
Post #6





Grupa: Zarejestrowani
Postów: 279
Pomógł: 60
Dołączył: 25.02.2012

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


może po prostu w tej klasie jest też metoda __get() tongue.gif


--------------------
there is much to be learned
Go to the top of the page
+Quote Post
michail_w
post 15.07.2012, 21:52:08
Post #7





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 18.10.2009

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


irmidjusz ma rację, jest __get(). Sory za kłopot.
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 18:21