![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 866 Pomógł: 32 Dołączył: 2.06.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
OStatnio czytałem że zminił się w php 4.4 sposób przekazywania obiektów i innych danych poprzez referencję i na przykład dlatego są problemy z mojavi (mi osobiście, jak i paru innym osobą właśnie z powodu referencji się wywala na php 4.4.1). Podobno jest też jakaś zmiana w 5.1 w stosunku do 5.0
Na czym polegają te zmiany 4.4 w stosunku do 4.3 ? A jakie w 5.1 w stosunku do 5.0? I teraz: Mam sobie obiekt $DB który jest połaczeniem opartym o AdoDB z bazą MySQL i chce go przekazać jakiejś klasie, w jaki sposób to zrobić najefektywniej (najszybciej i najmniej zasobów zużywając? Chodzi mi o php 4.1 (serwer hostingowy takowe posiada a do przesiadki się nie szykuje ![]() ![]() Tak:
Czy moze tak, jak mi Zend Studio 5.1 podpowiada swoim Code Analyzer:
Różnuica jest w "function Obiekt(&$DB)" Akurat w tym moim małym projekcie to i tak nie ma znaczenia bo stosunek mocy obliczeniowej posiadanej do potrzebnej jest w najgorszym wypadku dużo wiecej niż wystarczający. Chciałbym jednak nauczyć się dobrych nawyków ![]() -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
moze tam cos przeczytasz: http://ez.no/community/articles/reference_issues
|
|
|
![]() ![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 569 Pomógł: 0 Dołączył: 17.08.2003 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) ![]() ![]() |
Z tego co wiem od wersji 5.0 referencje sa automatyczne w obietkach. Albo jakos tak.
Jesli natomiast chcemy zrobic kopie obiektu to chyba bylo stworzone cos takiego jak __clone()w php5 oba przyklady podane przez ciebie powinny dzialac tak samo, roznic powinna byc jedynie przy php4. -------------------- Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota Zarządzaj swoim budżetem domowym |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 866 Pomógł: 32 Dołączył: 2.06.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
@ActivePlayer: Już wiem o co w takim razie chodziło z tym zamieszaniem z referencją
![]() Co do moich przykładów, to wiem że w PHP4 jest róznica. Bo pierwszy, zakładając że się nie mylę, przekazuje dany obiekt przez referencję. Czyli nadal mamy jeden obiekt. Mniejsze zużycie pamieci, zamiast drugiego obiektu mamy jedynie referencję. Natomiast w drugim robimy kopię obiektu. Czyli mamy dwa obiekty. Większe zuzycie pamięci. I w tym miejscu Zend Studio mi mówi że, póki nie zmieniamy obiektu (czyli nie zmienieamy jego atrybutów) to o wiele lepiej jest skopiować dany obiekt, zamiast go podawaćprzez referencję. Dlaczego? Zend mówi, że jest to o wiele szybsze. Czy to prawda? I jak to odnieść do takich Obiektów jak ten z AdoDB (sam nie wiem co on dokladnie zawiera ![]() ![]() -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 416 Pomógł: 0 Dołączył: 8.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
Zobacz czy masz Zend Studio ustawione na php4 czy php5.
Bo dla php4:
Odpowiednikiem w php5 jest:
Gdy przekazujemy obiekty jako argument funkcji php5 automatycznie przekazuje jako referencje. Nie ma potrzeby stosowania &. Zwiazane jest to, tak mi sie przynajmniej wydaje, z tym ze w php5 wprowadzono inny mechanizm kopiowania obiektow, mianowicie 'clone' Ten post edytował ikioloak 12.01.2006, 20:06:33 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 866 Pomógł: 32 Dołączył: 2.06.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Co do różnic między 4.3 a 4.4 i 5.0 5.1 to już wiem o co chodzi, zwaracanie wartości i referencja, wszystko jest w linku od ActivePlayera.
Zend mam ustawiony na PHP4, tyle że nie o Zenda chodzi, ale o samą składnie języka. Co jest szybsze, referencja czy klonowanie? I czy warto poświęcać zasoby jeżeli klonowanie jest szybsze włąsnie dla tej szybkości? Cały czas Mówimy o PHP4 -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 476 Pomógł: 1 Dołączył: 5.11.2005 Skąd: Bieruń city Ostrzeżenie: (0%) ![]() ![]() |
to zalezy. jezeli masz strone ktora odwiedza n-tysiecy osob to zasoby sa super wazne. jak masz malo pamieci to na nic ci szybszy o kilka setnych sekundy skrypt (takie jest moje zdanie)
-------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat(sztosz @ 2006-01-12 20:51:49) I w tym miejscu Zend Studio mi mówi że, póki nie zmieniamy obiektu (czyli nie zmienieamy jego atrybutów) to o wiele lepiej jest skopiować dany obiekt, zamiast go podawaćprzez referencję. Dlaczego? Zend mówi, że jest to o wiele szybsze. Czy to prawda? Chyba na odwrót. Jesli nie zmieniamy obiektu to lepiej go przekazac przez referencje bo wtedy wciaz mamy ten sam niezmieniony obiekt wiec nie ma potrzeby tworzyc jego kopii. Natomiast jesli nasze dzialania na obiekcie pierwotnym prowadza do jego zmiany to lepiej go skopiowac, aby zachowac "orginal" - oczywiscie kosztem pamieci. Moim zdaniem w Twoim przypadku lepiej zastosowac referencje chyba, ze w klasie zmieniasz konfiguracje obiektu np. wywołując
-------------------- bigZbig (Zbigniew Heintze) | blog.heintze.pl
|
|
|
![]()
Post
#9
|
||||||||||||
![]() Grupa: Zarejestrowani Postów: 866 Pomógł: 32 Dołączył: 2.06.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Zend mi napisał:
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:
|