Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V  < 1 2  
Reply to this topicStart new topic
> Obiektowość w PHP5, pytanie dotyczące interfejsów
bigZbig
post 3.08.2006, 14:17:29
Post #21





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Cytat(dr_bonzo @ 3.08.2006, 11:59 ) *
W Javie to widac:
...

Przepraszam dr_bonzo, ale co widac, bo jak dal mnie z Twojego przykladu nic nie wynika odnosnie sensu uzywania metod innych niz publiczne.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
dx9
post 4.08.2006, 20:28:01
Post #22





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.08.2006

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


Dlaczego używać metod prywatnych lub chronionych? Z powodów bezpieczeństwa. Wyobraź sobie np. logowanie. oczywiście chcesz, żeby dało się zalogować użytkownika wpisując login i hasło, ale także tylko mając id i hash sprawdzający. Jeśli zadeklarujesz sobie funkcję (prywatną lub chronioną) authorize($id), która odpowiadać będzie za ustawienie zmiennych sesyjnych i podniesienie uprawnień, to metodę tą wywołasz tylko i wyłącznie z tej klasy. Jesli natomiast będzie funkcją public, to ktoś moze wywołać tą funkcje spoza klasy logując sie na danego usera tylko podając id. Takie coś powoduje niebezpieczeństwo w przypadku błędu w kodzie.

A dlaczego wyodrębnić można metode authorize? Po to, żeby nie powtarzać 2 razy tego samego kodu. Czy wybierzemy protected czy private zależy od tego czy chcemy mieć możliwość używania tej metody w klasach pochodnych


--------------------
Rozwiąż test php
Go to the top of the page
+Quote Post
NuLL
post 4.08.2006, 20:51:33
Post #23





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Ja stosuje metody prywatne po to aby ograniczyc dlugosc metod - kod lepiej wyglada kiedy metody maja 40 linii a nie po 100 winksmiley.jpg Pozatym kiedy trzeba powtorzyc jakas czesc kodu raczej tez stosuje sie metody prywatne smile.gif


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Jarod
post 24.08.2006, 20:50:17
Post #24





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(Ludvik @ 3.08.2006, 09:05 ) *
  1. <?php
  2. function funcTwo(ClassTwo $o) {
  3. $o->methodOne(); // Zawsze OK
  4. $o->methodTwo(); // Zawsze OK
  5. $o->methodThree(); // Zawsze OK, bo kontrola typów nie dopuści ClassOne
  6. }
  7. ?>


function funcTwo(ClassTwo $o) ponieważ wymuszasz, aby przeakzany argument był instacją klasy ClassTwo

Cytat(Ludvik @ 3.08.2006, 09:05 ) *
  1. <?php
  2. function funcOne(Iface $o) {
  3. $o->methodOne(); // Zawsze OK
  4. $o->methodTwo(); // Zawsze OK
  5. $o->methodThree(); // Niepewne wywołanie... Zwróci błąd w przypadku ClassOne.
  6. }
  7. ?>


function funcOne(Iface $o)
A tutaj co wymuszasz? Żeby przekazywany argument implementował interfejs czy, żeby to był obiekt który implementuje interfejs?


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
Cysiaczek
post 24.08.2006, 21:00:25
Post #25





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Obiekt implementujący interfejs smile.gif
Pisałem już kiedyś. Jak klasa implwementuje interfejs, to zyskuje nowy typ, będący nazwą intefejsu.
Czyli klasa.
  1. <?php
  2. class A implements viewable{
  3. }
  4. ?>

To klasa typu A oraz viewable. Można wymusić jej obiekt zarówno po nazwie klasy, jak również po nazwie interfejsu.

Czyli kod:
  1. <?php
  2. function dopisz_wg_interfejsu(viewable $obiekt){}
  3. //lub
  4. function dopisz_wg_klasy($obiekt){}
  5. ?>


Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post

2 Stron V  < 1 2
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: 20.06.2025 - 17:59