![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 30.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, potrzebuję zrobić coś takiego, żeby klasaPierwsza miała dostęp do 'klasa', a klasaDruga już nie, czyli potrzebuje czegoś takiego:
macie może jakiś pomysł jak to zrobić? EDIT (co do wyjaśnienia): mam kod taki jak ten u góry: jest sobie klasa o nazwie "klasa" i problem jest w tym, że instancję tej klasy można robić z każdego miejsca, a chciałbym, aby jej instancję można było robić tylko z określonych innych klas. Ten post edytował mareczek2 30.04.2007, 21:21:51 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 611 Pomógł: 19 Dołączył: 28.02.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
nie rozumiem co chcesz zrobić
![]() ![]() -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Jedyne co możesz zrobić to skorzystać z dziedziczenia. Ustawic konstruktor jako protected i wtedy tylko klasa ktora dziedziczy bedzied mogla wywolac ta klase. Innego sposobu nie ma.
-------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 470 Pomógł: 75 Dołączył: 21.09.2005 Skąd: że znowu Ostrzeżenie: (0%) ![]() ![]() |
da się da - troche pomyślunku
![]()
pewnie da się to zrobić inaczej - ale jakoś tylko to mi w tej chwili do głowy przychodzi. oczywiscie gotowca nie ma ale jest wskazówka ![]() //edit : dla jasności - nie chodzi mi o wykorzystanie wyjątków - tylko mozliwości trasowania która jest zaimplementowana między innymi tam debug_backtrace() Ten post edytował devnul 30.04.2007, 22:44:30 -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
No pomysł ciekawy
![]() A inaczej mozesz zrobic dodajac przy wywołaniu $this i za pomocą instanceof sprawdzac czy ta klasa moze tworzyc nowy obiekt. Ale to jest metoda troche bardziej uciążliwa od tej devnull'a. -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 30.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat A inaczej mozesz zrobic dodajac przy wywołaniu $this i za pomocą instanceof sprawdzac czy ta klasa moze tworzyc nowy obiekt to nic mi nie da, bo wystarczy, że zamiast $this klasa wrzuci mi instancję jakiejś uprawnionej klasy - tak wiem klasy nie są żywe i same tego nie zrobią, ale poszczególne klasy nie są z "autoryzowanego" źródła devnul, wielkie dzięki Ten post edytował mareczek2 30.04.2007, 22:53:07 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 470 Pomógł: 75 Dołączył: 21.09.2005 Skąd: że znowu Ostrzeżenie: (0%) ![]() ![]() |
A prosze
![]() @menic: czy rozwiązanie o którym mówisz nie wymagałoby dziedziczenia? chyba że coś źle zrozumiałem. Poza tym dziedziczenie nie daje gwarancji na poprawne działanie. Przynajmniej tak mi się zdaje -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
NIe wymagałoby. Poprostu sprawdzasz w konstruktorze czy przekazany obiekt jest typu ktory jest dozwolony. Mozesz to wlasnie osignac za pomocą instanceof
![]() Tylko własnie w tym przypadku istnieje mozliwosc "podlozenia" jakiegos bubla. Ten post edytował menic 1.05.2007, 10:51:12 -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 470 Pomógł: 75 Dołączył: 21.09.2005 Skąd: że znowu Ostrzeżenie: (0%) ![]() ![]() |
czyli chcesz jako parametr przekazywac, no to faktycznie troche za duże zaufanie do potencjalnego usera
-------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 9.09.2002 Skąd: Pszczyna Ostrzeżenie: (0%) ![]() ![]() |
Tylko zastanawiam się co takie zabezpieczenie mogłoby wnieść w logikę aplikacji? I tak w zasadzie nie zabezpieczysz się przez niewłaściwym użyciem danej klasy. Jeżeli trafisz na "specjalistę" to jest w stanie i klasę Drzewo wykorzystać jako List
![]()
Pozdrawiam |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 470 Pomógł: 75 Dołączył: 21.09.2005 Skąd: że znowu Ostrzeżenie: (0%) ![]() ![]() |
@faster: Twoje rozwiązanie wymaga przekazania parametru, który może być dowolny (bo równie dobrze zamiast $this możęsz przekazać instancję obiektu który pasuje do wzorca, ew dziedziczyć po klasie pierwszej i nadpisać odpowidnie metody. IMHO sposób zły
-------------------- |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
A może tak :
Zobacz co to zwraca - masz informację dot. co wywołało co i w jakiej kolejności. Ten post edytował prond 4.05.2007, 11:53:43 -------------------- --------------------------------------------------------------------------------
weblog.axent.pl -------------------------------------------------------------------------------- |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 470 Pomógł: 75 Dołączył: 21.09.2005 Skąd: że znowu Ostrzeżenie: (0%) ![]() ![]() |
@prond: przeczytaj wątek od początku, wspominałem o tym w sowim pierwszym poscie.
-------------------- |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Sorki, wcześniej nie zauważyłem EDIT'a tylko wykorzystanie wyjątków.
-------------------- --------------------------------------------------------------------------------
weblog.axent.pl -------------------------------------------------------------------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 14:55 |