Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rzutowanie obiektow
Teamon
post
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)


--------------------
Blog - programowanie, webdesign, Symfony
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
rolnix
post
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


--------------------
Go to the top of the page
+Quote Post
Teamon
post
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)


--------------------
Blog - programowanie, webdesign, Symfony
Go to the top of the page
+Quote Post
dr_bonzo
post
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.

  1. <?php
  2. $a = new A();
  3. $b = (B)$a;
  4. ?>


Po zatym takie cos nie przejdzie bo $a jest instacja klasy A, a nie B.
Nie zmienisz typu obiektu (z A na cool.gif, mozesz tylko zmienic typ referencji do tego obiektu (z A do 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;


--------------------
Nie lubię jednorożców.
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 Aktualny czas: 19.08.2025 - 10:22