Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Orm Implementacja Iteratora
Forum PHP.pl > Forum > PHP > Object-oriented programming
marcio
Hej tworze orm'a i mam taki problem chcialbym miec dostep do czesci tablicy za pomoca foreach() i odwolywania sie $object -> key zamiast $object['key'], poki co dziala ale tylko jesli jest poza foreach.
Czy foreach samo nie wywoluje metody next() na obiekcie zeby go prze iterowac?


Poki co doszedlem do takiego czegos:
  1. class Vf_Orm_Object extends stdClass implements Iterator
  2. {
  3. private $key = 0;
  4.  
  5. private $arr = array();
  6.  
  7. public function __set($key, $value)
  8. {
  9. $this -> arr[$key] = $value;
  10. }
  11.  
  12. //to juz w foreach nie dziala
  13. public function __get($key)
  14. {
  15. return $this -> arr[$this -> key()][$key];
  16. }
  17.  
  18. public function rewind()
  19. {
  20. $this -> key = 0;
  21. }
  22.  
  23. public function key()
  24. {
  25. return $this -> key;
  26. }
  27.  
  28. public function next()
  29. {
  30. ++$this -> key;
  31. }
  32.  
  33. public function current()
  34. {
  35. return $this -> arr[$this -> key];
  36. }
  37.  
  38. public function valid()
  39. {
  40. return isset($this -> arr[$this -> key]);
  41. }
  42. }

I teraz tal chodzi:
  1. $orm = Vf_Orm::factory() -> findAll() -> toObject();
  2. print $orm -> id; //dziala pokazuje id pierwszego news'a
  3. while($orm -> valid())
  4. {
  5. print($orm -> id);
  6. $orm -> next();
  7. }

Jak zrobic by chodzilo z foreach?

P.S kombinowalem tez z IteratorAggregate i ArrayIterator
wookieb
Po prostu wrzuć to do foreach i tyle.

Poza tym WTF
  1. extends stdClass


Poza tym przeczytaj
http://www.slideshare.net/wookieb/iteratory
marcio
Poczytam...

Co do stdClass to tak mam bo na poczatku to byl kontener na dane, raczej w niczym nie przeszkadza.

No jak wrzuce do foreach() to nie dziala:
Kod
Trying to get property of non-object

Byc moze zadziala jak uzyje next() i ewentualnie valid() jednak mi chodzi o to by metoda next() sama sie wywolywala podczas iteracji.
wookieb
Numer linii już ciężko podać?
Nie, extend stdClass jest bez sensu bo kompletnie nic nie wnosi.
marcio
@wookieb wyluzuj przeciez napisalem ze wyskakuje ten blad jak odwolam sie w foreach() jak na obiekcie przeczytaj wyrazniej.

  1. $orm = Vf_Orm::factory() -> findAll() -> toObject();
  2. foreach($orm as $key)
  3. print $key -> id;
nospor
Cytat
@wookieb wyluzuj przeciez napisalem ze wyskakuje ten blad jak odwolam sie w foreach() jak na obiekcie przeczytaj wyrazniej.
Nie zmienia to faktu, że należy podać nowy kod oraz zaznaczyć linię o której mowa. Czemu my mamy się domyślać co akurat teraz tam masz? Wiesz ile razy userzy tu mówią że zrobili tak jak im się kazało, a potem się okazywało, gdy wkońcu łaskawie podali kod, że jednak nie robili tak jak im się kazało?

  1. $orm = Vf_Orm::factory() -> findAll() -> toObject();
  2. var_dump($orm);
  3. foreach($orm as $key)
  4. var_dump($key);
Crozin
Tak może nie do końca związane z tematem, ale:
1. Po co robisz własnego ORM-a (bardzo, bardzo skomplikowane narzędzie) skoro masz dostępne dobre i sprawdzone rozwiązania, np. w postaci Doctrine? Szczególnie zważywszy na to, że nawet te rozwinięte mają czasami poważne braki.
2. IteratorAggregate + ArrayIterator - nie ma potrzeby powtarzać się z własnym kodem.
3. Po co już na początek kładziesz sobie kłody pod nogi używając __get() i __set()?
marcio
var dump na $key:
Cytat
array(5) { ["id"]=> string(3) "301" ["autor"]=> string(4) "\\\'" ["data"]=> string(10) "27/01/2012" ["tytul"]=> string(4) "\\\'" ["tresc"]=> string(2) "//" } array(5) { ["id"]=> string(3) "302" ["autor"]=> string(6) "marcio" ["data"]=> string(10) "25/01/2012" ["tytul"]=> string(4) "csrf" ["tresc"]=> string(9) "dziala ;p" } array(5) { ["id"]=> string(3) "305" ["autor"]=> string(6) "sadfsa" ["data"]=> string(10) "28/01/2012" ["tytul"]=> string(6) "dfasdf" ["tresc"]=> string(7) "asdsdfa" } array(5) { ["id"]=> string(3) "306" ["autor"]=> string(4) "CTRL" ["data"]=> string(10) "01/02/2012" ["tytul"]=> string(14) "Evil Fox Forum" ["tresc"]=> string(15) "Pozdrawiam CTRL" } array(5) { ["id"]=> string(3) "308" ["autor"]=> string(4) "tedt" ["data"]=> string(10) "06/02/2012" ["tytul"]=> string(9) "st dt dst" ["tresc"]=> string(5) "rstst" }

na orm:
Cytat
object(Vf_Orm_Object)#9 (2) { ["key:private"]=> int(0) ["arr:private"]=> array(5) { [0]=> array(5) { ["id"]=> string(3) "301" ["autor"]=> string(4) "\\\'" ["data"]=> string(10) "27/01/2012" ["tytul"]=> string(4) "\\\'" ["tresc"]=> string(2) "//" } [1]=> array(5) { ["id"]=> string(3) "302" ["autor"]=> string(6) "marcio" ["data"]=> string(10) "25/01/2012" ["tytul"]=> string(4) "csrf" ["tresc"]=> string(9) "dziala ;p" } [2]=> array(5) { ["id"]=> string(3) "305" ["autor"]=> string(6) "sadfsa" ["data"]=> string(10) "28/01/2012" ["tytul"]=> string(6) "dfasdf" ["tresc"]=> string(7) "asdsdfa" } [3]=> array(5) { ["id"]=> string(3) "306" ["autor"]=> string(4) "CTRL" ["data"]=> string(10) "01/02/2012" ["tytul"]=> string(14) "Evil Fox Forum" ["tresc"]=> string(15) "Pozdrawiam CTRL" } [4]=> array(5) { ["id"]=> string(3) "308" ["autor"]=> string(4) "tedt" ["data"]=> string(10) "06/02/2012" ["tytul"]=> string(9) "st dt dst" ["tresc"]=> string(5) "rstst" } } }


@nospor to nie zmienia faktu ze nie atakuje sie tak uzytkownika forum tym bardziej ze nie zdaje mi sie zebym zadal jakies potepiane pytanie.

@crozin
1.)Bo chce mam czas i checi to raz 2 nie chce kobyly ktorej i tak nie wykorzystam.
3.)Bo mi tak jest wygodnie wink.gif nie uwazam to za zla praktyke jest to prosty kontener nie widze potrzeby robic zestam getterow/setterow()
nospor
Jak sam widzisz, $key jest tablicą, wiec trudno by się do tego dobierać jak do obiektu.

Cytat
@nospor to nie zmienia faktu ze nie atakuje sie tak uzytkownika forum tym bardziej ze nie zdaje mi sie zebym zadal jakies potepiane pytanie.
A gdzie on Cię zaatakował? To że nie napisał "Kochany marciu, podaj jeśli możesz linię błędem" nie znaczy, że Cię zaatakował :/
marcio
Cytat
A gdzie on Cię zaatakował? To że nie napisał "Kochany marciu, podaj jeśli możesz linię błędem" nie znaczy, że Cię zaatakował :/

Nvm sa rozne sposoby i tony wink.gif

No ze jest tablica to ja sobie zdaje sprawe tylko jak mam zrobic by hulalo?
Rzutowac na (object)?!?
nospor
No skoro to jest tablica to:
  1. foreach($orm as $key)
  2. echo $key['id'];
Crozin
Cytat
[...] i odwolywania sie $object -> key zamiast $object['key'] [...]
W przypadku gdy $object jest tablicą, całe szczęście nie ma takiej możliwości.
Cytat
1.)Bo chce mam czas i checi to raz 2 nie chce kobyly ktorej i tak nie wykorzystam.
Ale zdajesz sobie sprawę, że:
1. Ten czas lepiej przeznaczyć na zapoznanie się z istniejącymi rozwiązaniami, z których później będzie można rzeczywiście korzystać.
2. ORM musi być rozbudowanym i skomplikowanym narzędziem, żeby mieć możliwość zrealizowania rozbudowanego i skomplikowanego zadania jakim jest mapowanie danych z relacyjnej bazy do obiektów i odwrotnie.
3. Jak z każdym rozbudowanym narzędziem najpierw trzeba poznać już istniejące by dowiedzieć się, które rozwiązania się sprawdziły, a które okazały ślepymi uliczkami; gdzie występują wąskie gardła przy danych architekturach; co należałoby zmienić względem już istniejących rozwiązań itp. itd.
4. Te "kobyły" potrafią być nieraz i tak mocno wybrakowane; część z nich (zapewne większość) i tak będzie lżejsza od Twojego rozwiązania.

No ale to Twój czas i Ty jesteś jego panem. Widzę tylko (po skromnym skrawku kodu jaki tutaj pokazałeś), że raczej nie spożytujesz go wartościwo. Dobrych praktyk co do pisania kodu raczej też nie zdobębdziesz.

Cytat
3.)Bo mi tak jest wygodnie wink.gif nie uwazam to za zla praktyke jest to prosty kontener nie widze potrzeby robic zestam getterow/setterow()
Akurat tutaj miałem na myśli utworzenie normalnych metod get($key), set($key, $value), użycie __get/__set nie wprowadza żadnych korzyści, natomiast co do problemów... kilka by się znalazło.

Swoją drogą... metoda findAll() zwra jeden obiekt? Niezbyt to logiczne. Podobnie jak używanie "kontenera" w formie encji.
marcio
Cytat
Swoją drogą... metoda findAll() zwra jeden obiekt? Niezbyt to logiczne. Podobnie jak używanie "kontenera" w formie encji.

Metoda findAll zwraca normalnie tablice za pomoca mysql_fetch_assoc
Orzeszekk
mam na koncie napisanie wlasnego ormu, i do dzis zastanawiam sie dlaczego bylem az tak głupi. Oparcie serwisu na wlasnym ormie to zrodlo niezliczonych problemów zwiazanych z naprawianiem błędów w swojej bibliotece oraz rozbudowy gdy jej mozliwosci przestana ci wystarczac. Rozbudujesz na szybko - bedzie sie z tego nie wygodnie korzystac i beda bledy. Zrobisz to dobrze - opracujesz sie i zmarnujesz czas a i tak nikt poza toba z tego nie skorzysta. A jak zrobisz to mało elastycznie to w ogole zadnego pozytku z niej nie bedzie bo bedzie problem z jej zastosowaniem w mniej typowych rozwiazaniach. + dziesiatki what the fucków od osob ktore byc moze przejmą kiedys ten kod. + znajomosc doctrine ci sie przyda kiedys w pracy, a znajomosc swojej wlasnej biblioteki juz nie, raczej nikt ci nie pozwoli oprzec o to serwisu bo czas zmarnowany na soft to 30% implementacji i 70% debugowania i poprawek, a im bibliooteka lepsza tym ta strata jest mniejsza.

widzialem ostatnio porownanie doctrine2 i jakiejs "leciutkiej" biblioteki. Leciutkiej w takim sensie ze zajmowala duzo mniej kilobajtów niz doctrine2. I co? Ta rozbudowana kobyła, doctrine2 byla ponad 2 razy szybsza od tej leciutkiej prostej biblioteki, dzieki przemyslanym algorytmom optymalizowania zapytan i cache dzialala szybciej.

W ogole jak sie uczysz programowac obiektowo to daj sobie na jakis czas spokoj z PHP. Napisz sobie jakis serwis dla treningu w javie+jakis framework webowy, ewentualnie w C# asp.net MVC, i po pol roku praktyki tam, wroc sobie do php jak ci sie bedzie chcialo.
W php sie bardzo łatwo wyrabia złe nawyki, ktore pozniej "procentują". Lepiej podpatrzec jak zostalo to rozwiązane u mądrzejszych, i dopiero wtedy przeniesc sie z obiektowoscia do PHP.
marcio
Poprostu potrzebuje prostego narzedzia do prostych zlecen a chce wiedziec jak ono dziala od 0 wiec pisze swoje.

Nie nie ucze sie pisac obiektowo poprsotu nigdy nie rozwiazywalem takiego tematu wiec nie wiedzialem co i jak.

Jak juz mam tracic czas na nauke to poswiece to na django najpierw jednak musze skonczyc ten silnik bo mam 2-3 rzeczy do zrobienia potem poswiece sie dla django wink.gif i jak zawsze hobbystycznie dla C#+.NET

Zreszta dlaczego zawsze musi sie robic taki off top...jak ktos robi to znaczy ze ma powody zeby to robic sleep.gif'
Crozin
Cytat
Poprostu potrzebuje prostego narzedzia do prostych zlecen a chce wiedziec jak ono dziala od 0 wiec pisze swoje.
1. No to stworzysz bezużyteczne narzędzie, bo nawet w bardzo prostych projektach od czasu do czasu pojawia się coś co nie jest "bezszczelnie" trywialne.
2. Szybciej nauczysz się na pamięć źródeł istniejącego, rozbudowanego projektu niż stworzysz własny, bezużyteczny, prosty projekt.
Cytat
Nie nie ucze sie pisac obiektowo poprsotu nigdy nie rozwiazywalem takiego tematu wiec nie wiedzialem co i jak.
Tym bardziej nie powinieneś się w ogóle brać za to. Domyślam się też, że nie znasz porządnie żadnego ORM-a, więc nawet nie będziesz wstanie zaprojektować średnio poprawnie własnego.
Cytat
Jak juz mam tracic czas na nauke to poswiece to na django najpierw jednak musze skonczyc ten silnik bo mam 2-3 rzeczy do zrobienia potem poswiece sie dla django wink.gif i jak zawsze hobbystycznie dla C#+.NET
Czyli wolisz stracić czas na bezwartościowy projekt (bo nie dość, że słaby to jeszcze docelowo do raptem 2-3 projektów), z którego wyciągniesz bardzo niewiele (jeżeli chodzi o doświadczenie/umiejętności), zamiast nauczyć się przykładowo podstawowej obsługi Doctrine, która: a) umożliwiłaby Ci korzystanie z powszechnie stosowanego narzędzia; cool.gif dała by Ci ogólne rozenanie co do architektury ORM-ów, i nie tylko PHP-owskich - właściwie na start miałbyś wiedzę n/t JPA. Inne platformy również stałyby otworem.

Cytat
Zreszta dlaczego zawsze musi sie robic taki off top...jak ktos robi to znaczy ze ma powody zeby to robic
Bo po prostu nie zdajesz sobie sprawy z błędów jakie popełniasz. Gdyby to było stricte 4fun to jeszcze OK, ale tutaj tak nie jest.
wookieb
Ludzie - przestańcie atakować kogoś za to, że sobie coś stworzy. Nic wam nie da naskakiwania na niego a wręcz przeciwnie - agresja urośnie.
Taka osoba sama musi się przekonać czy to co robi jest dobre czy nie.
Poza tym uwierzcie ale nigdzie indziej nie nauczycie się projektować i programować obiektowo, jeżeli sobie tego nie przećwiczycie w taki sposób jak robi to autor wpisu.
Orzeszekk
Cytat(wookieb @ 21.02.2012, 15:41:57 ) *
Ludzie - przestańcie atakować kogoś za to, że sobie coś stworzy. Nic wam nie da naskakiwania na niego a wręcz przeciwnie - agresja urośnie.
Taka osoba sama musi się przekonać czy to co robi jest dobre czy nie.
Poza tym uwierzcie ale nigdzie indziej nie nauczycie się projektować i programować obiektowo, jeżeli sobie tego nie przećwiczycie w taki sposób jak robi to autor wpisu.


Piszac w php nic dobrego sie nie nauczy, raczej wyrobi sobie złe nawyki. co innego pisac opierajac sie o dobry framework - sf/sf2 podpatrzysz sobie jak to sie robi w duzych aplikacjach i dlaczego tak a nie inaczej i bedziesz pisal od razu dobrze zamiast tworzyc makaronowego potwora spagetti.

nie wiem czemu ale php kusi do tego by pisac w nim wlasne rozwiazania, czesto słabe. przed php i po php programowalem w roznych jezykach i nigdy tego nie robilem, a w php jakos ciezko tego uniknąć. Ten język sam w sobie jest ubogi, ktos to widzi i zaczyna go wzbogacac na swoje potrzeby, a pozniej jak sie dowie ze sa duzo lepsze frameworki do pehapa to juz jest przyzwyczajony i szkoda mu rzucic takiego stylu pisania. Niektorzy mysli ze sa lepsi piszac wlasne rozwiazania, ze gotowce to robota dla lamusów, przynajmniej ja tak kiedys myslalem. Takie osoby sie faktycznie musza sparzyc czym to smierdzi w przyszlosci.

Przerób sobie tutorial symfony jobeet zamiast tracic czas na ten swoj jednorazowy silnik, albo wyprobuj ksiazke microsoftu MCTS 70-515 asp.net development self paced training kit, ksiazka opisuje asp tak dokladnie jak tylko sie da i zaden ficzer ci z niego nie ucieknie. Bedziesz wiedzial gdzie siegnac i z czego skorzystac zamiast wynajdywac kolo na nowo.

Cytat
Zreszta dlaczego zawsze musi sie robic taki off top...jak ktos robi to znaczy ze ma powody zeby to robic '

niekoniecznie. moze po prostu nie wie jak zrobic to poprawnie i kombinuje naokoło. poprawne rozwiazania nie sa poprawnymi dlatego ze ktos tak sobie wymyslil i tak jest, tylko dlatego ze są najlepsze na daną chwile i ciezko je poprawic.
marcio
Cytat
Ludzie - przestańcie atakować kogoś za to, że sobie coś stworzy. Nic wam nie da naskakiwania na niego a wręcz przeciwnie - agresja urośnie.
Taka osoba sama musi się przekonać czy to co robi jest dobre czy nie.
Poza tym uwierzcie ale nigdzie indziej nie nauczycie się projektować i programować obiektowo, jeżeli sobie tego nie przećwiczycie w taki sposób jak robi to autor wpisu.

@wookieb sry ale twoja wypowiedz wsadze sobie chyba w sygnature(podpis !sic!?)
Sama za siebie mowi.

@crozin
Cytat
Tym bardziej nie powinieneś się w ogóle brać za to. Domyślam się też, że nie znasz porządnie żadnego ORM-a, więc nawet nie będziesz wstanie zaprojektować średnio poprawnie własnego.

Cytat
Bo po prostu nie zdajesz sobie sprawy z błędów jakie popełniasz. Gdyby to było stricte 4fun to jeszcze OK, ale tutaj tak nie jest.

Zgadzam sie z tym, tym bardziej ze patrze teraz na to bardziej jak na rynek pracy niz hobby.

@Orzeszekk & @Crozi

Ogolnie zgadzam sie z wami w 100% tylko jest jedno wielkie ale.

PHP mnie juz nudzi, czasami kodzenie w nim jest niewygodne czuje tez powoli ze jest ograniczajacy.
Chce wdrozyc sie w rynek pracy za pomoca innej technologi u boku PHP, w wolnym czasie zajmuje sie(albo lepiej zajmowalem) python'em i C#+.NET.
O ile widze potencjal tworzenia aplikacja pod web w python'ie(i jego poteznych fw jak django,pylons i zope) to juz widze z tego co czytam ze w asp.net/asp.mvc nie jest juz tak pieknie(moja sybiektywna opinia oparta tylko na tym co czytam)

Przegladam od kilku dni dokumentacje Django i Pylonsa dzis zajrze tez do Pyramid i Zope.
Poki co wiem ze najwieksza roznica pomiedzy django a pylons to elastycznosc i modularnosc na korzysc pylons'a jednak skladnia,dokumentacja,admin generator,generic views i prosty sposob zarzadzanie routingiem mnie do niego przemawia(choc pisza ze routes z pylons'a czy ror jest o wiele lepszy).

Bardzo ciekawym tematem w dzialem pro lub hydepark bylby temat o technologia kto w czym pisal i pisze i dlaczego, jakie widzi zalezty i wady danego wyboru, jakies projekty.

Bardzo mnie to interesuje i nurtuje mnie wybor technologi.
Poprostu nie widze potegi w php nawet takie symfony czy zend wedlug mnie maja archaincze skladnie(chodzi o skladnie fw) w sieci watpie by bylo tyle przykladowych witryn www popartych kodem dla poczatkujacyh.

Moze ktos z was ma stycznosc z ktoras z wybranych technologi i moglby sie wypowiedziec ale tak na powaznie bez jaki flamewar'ow i wypowiedzi nonesens.

Ewentualnie wydzielilbym ta wypowiedz do innego watku jesli mozna i byloby o czym dyskutowac.

P.S chcialbym tylko powiedziec ze piszac wlasne rozwiazanie dobre czy zle jakie by nie bylo czesto patrze w kod kohany 2.x/3.x spawnframework, projekty coyote-fw/coyote-cmf(stoi na tym 4programmers) i przegladam tez duzo rozwiazan na github i code.google wiec jako tako mam jakis punkt odniesienia nie pisze tego na pale wink.gif
Crozin
Cytat
Bardzo ciekawym tematem w dzialem pro lub hydepark bylby temat o technologia kto w czym pisal i pisze i dlaczego, jakie widzi zalezty i wady danego wyboru, jakies projekty.
Zbyt subiektywny wątek, nawet jeżeli flame'u nie będzie cała masa bezwartościowych wiadomości jest gwarantowana. Można by co najwyżej porównać platformy jako takie (w końcu środowisko serwera aplikacji w JEE jest kompletnie różne od środowiska skryptów PHP), dostępność różnego rodzaju narzędzi itp., ale żadne "co lepsze".
Cytat
Poprostu nie widze potegi w php nawet takie symfony czy zend wedlug mnie maja archaincze skladnie(chodzi o skladnie fw) w sieci watpie by bylo tyle przykladowych witryn www popartych kodem dla poczatkujacyh.
PHP jako język jest bardzo, bardzo słabe, jednak pojawienie się pierwszych wersji Symfony/Zenda/CI i innych dźwignęło go dosyć mocno. Swoją drogą architektura Symfony2/Doctrine2 jak na PHP jest nowatorska - fakt, że są to zerżnięte rozwiązania znane od wielu lat - chociażby ze świata JEE - ale co tu dużo mówić... są bardzo dobre dla ogólnych zastosowań. Tak więc był to krok w bardzo dobrą stronę.
Od razu zaznaczę, że jest to wyłącznie moja, mocno subiektywna opinia, jako byłego "użytkownika" PHP. smile.gif

Cytat
[...] czesto patrze w kod kohany 2.x/3.x spawnframework, projekty coyote-fw/coyote-cmf(stoi na tym 4programmers) i przegladam tez duzo rozwiazan na github i code.google [...]
Coyote-FW/CMF nie znam więc się nie wypowiadam, ale Kohana2/3 czy SpawnFramework to kod z którego nie powinieneś traktować jako wzoru jeżeli myślisz o pisaniu jakiś bardziej... ambitnych(?) aplikacji.
marcio
Cytat
Od razu zaznaczę, że jest to wyłącznie moja, mocno subiektywna opinia, jako byłego "użytkownika" PHP

Rozumiem ze teraz siedzisz na czyms innym po twojej wypowiedzi:
Cytat
w końcu środowisko serwera aplikacji w JEE jest kompletnie różne od środowiska skryptów PHP

Chodzi ci o JEE czy nie trafilem, jesli mozesz opisz na co sie przerzuciles z jakich powodow jakie ma wady i zalety w poprowaniu do php twoje nowe narzedzie wink.gif

Cytat
Coyote-FW/CMF nie znam więc się nie wypowiadam, ale Kohana2/3 czy SpawnFramework to kod z którego nie powinieneś traktować jako wzoru jeżeli myślisz o pisaniu jakiś bardziej... ambitnych(?) aplikacji.

Hehe sleep.gif

Cytat
Zbyt subiektywny wątek, nawet jeżeli flame'u nie będzie cała masa bezwartościowych wiadomości jest gwarantowana.

Hmm masz racje zawsze sie znajdzie ktos kto pisze glupoty jednak chodzi mi o temat wartosciowy mysle nawet dla wielu innych programistow(?) taka wymiana zdan na wlasnej skorze.
HgReed
Może ja odpowiem na zadane pytanie : w foreach zrób rzutowanie na obiekt ( (object)$var ) - zadziała.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.