![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 18.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jest sobie klasa A, ktorej bardzo nie chcialbym zmieniac.
Stworzylem klase B extends A. Problem w tym, jak zrobic zeby to dzialalo: Kod $a = new A(); $b = (B)$a; ? (Aha, jakby to cos dalo albo da sie to zrobic inaczej to chodzi mi o dodanie metody do klasy sfGuardUser, a rzutowanie jest potrzebne dlatego ze sfGuardUserPear::retrieveByUsername() zwraca obiekt typu sfGuardUser. Chodzi oczywiscie o Symfony) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 0 Dołączył: 16.04.2005 Skąd: Białowieża Ostrzeżenie: (0%) ![]() ![]() |
http://pl.php.net/manual/pl/language.oop5.overloading.php
A przypadkiem nie zadziała $b = new B(); $b = $a; ? Ten post edytował rolnix 10.11.2007, 20:53:34 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 18.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
W tym linku nie ma nic o rzutowaniu. Do tego (ci co sie bawia Symofny to beda wiedziec o co chodzi) w BasesfGuardUserPeer wszystko odwoluje sie poprzez sfGuardUserPeer:: zamiast przez self:: (aby mozna bylo to nadpisac) ale to powoduje ze w klasie dziedziczacej po sfGuardUserPeer za duzo nie zmienie (musialbym przepisac wielszosc z BasesfGuarduserPeer). Zdecydowalem sie na nadpisanie w sfGuardUserPeer
Kod const CLASS_DEFAULT = 'lib.model.User'; A to co podales nie dziala ($b staje sie obiektem A) |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Nie ma rzutowania w php. Po prostu uzywasz metod z klasy ktorej instacja jest ten obiekt.
Po zatym takie cos nie przejdzie bo $a jest instacja klasy A, a nie B. Nie zmienisz typu obiektu (z A na (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) , mozesz tylko zmienic typ referencji do tego obiektu (z A do (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) dzieki czemu bedziesz mial (gdyby to byla java/c++) dostep do metod klasy B, spod tej referencji. Sens ma dopiero takie cos Kod //java
A a = new B(); B b = (B)a; |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 19:40 |