Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]jak wymusić typ zwracanego przez metodę pola?
--emes--
post
Post #1





Goście







witam.

mam mały problem:
  1. <?php
  2. $storagePlace = new StoragePlace("storagePlace");
  3. $storage = new Storage($storagePlace, "storage");
  4. $album = new Album($storage, "name");
  5.  
  6. $st = $album->getStorage();
  7. ?>


chcę teraz na polu $st wywałać metodę klasy Storage, no i nie mogę.
no więc pierwsza myśl - typ zwracany przez metodę getStorage w klasie Album - tyle, że nie wiem jak ten typ określić...
  1. <?php
  2. public function getStorage() {
  3. return $this->storage;
  4. }
  5. ?>


na codzień piszę w javie, więc w php biegły nie jestem.
proszę zatem o pomoc
Go to the top of the page
+Quote Post
--emes--
post
Post #2





Goście







co ciekawe
  1. <?php
  2. var_dump($st);
  3. ?>

daje mi efekt tak jaki oczekuję...
Cytat
object(Storage)#2 (3) {
["id:private"]=> NULL
["storagePlace:private"]=> object(StoragePlace)#1 (2) {
["id:private"]=> NULL
["describtion:private"]=> string(12) "storagePlace"
}
["describtion:private"]=> string(7) "storage"
}


to w takim razie, dlaczego nie mogę wywołąć
  1. <?php
  2. $st->getDescribtion()
  3. ?>

pomimo, że getDescribtion() jest metodą klasy Storage?
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Huh, dziwne, bo powinno sie dac.

Tzn jaki error dostajesz po wywolaniu kodu


$st->getDescribtion()


aby na pewno nie zrobiles literowki (descriBtion?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) )
Go to the top of the page
+Quote Post
--emes--
post
Post #4





Goście







(IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif) no to się okazało, że działać działa, jedynie eclipse nie podpowiada mi w nim metod klasy Storage... (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif)
czemu tak się dzieje? czy jest w ogóle jakiś sposób określenia jaki tym zmiennej ma zwracać metoda??
Go to the top of the page
+Quote Post
drPayton
post
Post #5





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


Określić w pełnym tego słowa znaczeniu się nie da. Możesz jedynie rzutować typ, ale to z kolei nie obejmuje obiektów, więc musisz tego samodzielnie pilnować, np poprzez
  1. <?php
  2. if(is_object($this->storage)) { return $this->storage; } else { throw new Exception (...)}
  3. ?>
Go to the top of the page
+Quote Post
--emes--
post
Post #6





Goście







no tak...
czyli w takiej sytuacji sprawdzam jedynie czy to co zwracam jest obiektem w ogóle, a nie instatncją klasy storage.
ok - coś pokombinuję, żeby było dobrze ;-)

ps.
troszkę nie na temat, ale jakiego środowiska warto użyć, chociażby po to, aby w opisanej przezemnie sytuacji w obiekcie wyciągniętym z innego obiektu, mieć dostęp do metod jego klasy?
tak jak pisał - PDT nie bardzo się sprawdził (co dziwi mnie o tyle, że z javą radzi sobie świtnie... (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif) )
Go to the top of the page
+Quote Post
drPayton
post
Post #7





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


1. Czekaj, czekaj. Jak najbardziej możesz sprawdzić czy jest instancją danej klasy:
  1. <?php
  2. if($this->storage instanceof Storage)
  3. ?>

2. Radzi sobie z Javą, bo do tego (i w tym (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ) Eclipse został napisany. Ciekawy jestem, czy ZEND by to potrafił (ale to i tak płatne jest...)
Go to the top of the page
+Quote Post
--emes--
post
Post #8





Goście







(IMG:http://klubkm.pl/forum/images/smilies/doh.gif) no przecież...
zupełnie nie pomysłałem... (IMG:http://klubkm.pl/forum/images/smilies/bag.gif)
czyli obejść ustalania zwracanego typu można :-D

co do eclipsa - w sumie masz racje ;-)
chociaż muszę poszukać, że Quanta też mi w tej sytuacji nie pomogła...
no nic - muszę się rozglądnąć za jakiś środowiskiem...

dzięki
Go to the top of the page
+Quote Post
--emes--
post
Post #9





Goście







gdyby ktos miał podobny prolbem jak ja, to na szybkiego znalazłem taki jeden - PHP Designer
(IMG:http://www.mpsoftware.eu/images/img_objects_nested.gif)

szkoda jedynie, że tylko na windowsa... :-(
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
no to się okazało, że działać działa, jedynie eclipse nie podpowiada mi w nim metod klasy Storage...
czemu tak się dzieje? czy jest w ogóle jakiś sposób określenia jaki tym zmiennej ma zwracać metoda??


Masakra, to ze nie podpowiada !== ze nie dziala :/


Skoro w PHP nie ma okreslania typow, to automatycznie nie podpowiada w wiekszosci przypadkow. Uzyj phpdoc'a do okreslenia zwracanych typow, typow parametrow itp:

  1. <?php
  2. /**
  3.  * @return Costam
  4.  */
  5. public function getCostam()
  6. {
  7. ...
  8. }
  9. ?>


i wtedy zadziala

--
gdzie w javie bys to zapisal po prostu

Kod
public Costam getCostam()
{

}


Ten post edytował dr_bonzo 30.11.2007, 12:25:45
Go to the top of the page
+Quote Post
--emes--
post
Post #11





Goście







wiesz, gdy się człowiek przyzwyczai do pewnym udogodnień, to siłą rzeczy trochę go one ogłupić mogą - takie zycie.
natomiast sam kod - działać działa tak czy inaczej, a podane rozwiązanie podpowiadaczowi nie pomogło - i tak się gubi... (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif)

co się zaś tyczy "zwracania typu", to jednak porównanie komentarza, do deklaracji zwracanego typu ma się do siebie nijak... wybacz.
Go to the top of the page
+Quote Post
drPayton
post
Post #12





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


@dr_bonzo, jak się domyślam, miał na myśli to, że w momencie dodania takiego komentarza, PDT (jak i ZEND) w momencie wywoływania funkcji w dymku wyświetlą podpowiedź, jaki typ zwraca ta funkcja.
Go to the top of the page
+Quote Post
--emes--
post
Post #13





Goście







tak tak - wiem.
ułatwi co sprawę nieco przy korzystaniu z metody, tyle, że sam muszę pamiętać iż takowa tam w ogóle jest.

dziękuję Was wszystkim (IMG:http://klubkm.pl/forum/images/smilies/uklon.gif)
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #14





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


No niestety to jest wada jezykow dynamicznie typowanych
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 12:16