![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 4.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jak w temacie, co "lepsze"
public function abc() {} czy public static function abc() {} -------------------- php 5.1.6
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
MEGAROTFL
![]() ![]() A Ty wiesz wogole jaka jest roznica czy pomiedzy z metodami ze static i bez ![]() ![]() ![]() -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 4.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Myślę, a właściwie to jestem pewien, że powinieneś sobie jeszcze dość długo poleżeć na tym dywanie, dobrze by Ci to zrobiło.
Drugiego bardziej złośliwego i nie umiejącego odpowiadać na pytania a przy okazji przechwalającego się co to ja nie umiem to na tym forum nie ma. Wyobraź sobie że wiem. Wiesz co to jest : Dynamic Static Method Declared Static Method -------------------- php 5.1.6
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
yhym chyba nie za bardzo wiesz
![]() Statycznych metod uzywamy wtedy, kiedy nie potrzeba tworzyć instacji obiektu. odwołujemy się do nich przez "::"
Drugiej chyba wiadomo, bo książkowy przypadek metody w obiekcie... Ps. Przecież to jest wszystko uwarunkowane od okolicznośći, skoro nadal uważasz ze to jest w 100% zamienne i zależy od woli programisty, to pokaż jak stworzysz singletona bez static... |
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
~koala Twoje pytanie można porównać do: "Co jest lepsze? Klawiatura czy myszka?"
Przecież obie konstrukcje do czego innego służą, co innego oznaczają i nie stosuje się ich wymiennie. Powiedz co chcesz osiągnąć To Ci powiemy co w Twojej sytuacji jest bardziej odpowiednie. W żadnym razie nie ocenia się tego w kategoriach lepsze/gorsze. Doczytaj sobie manuala bo poważnie to jest śmieszne ![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Szanowny kolego koala, funkcja składowa static jest właściwością klasy, nie obiektu, podobnie jak zmienna static. A więc wynika z tego, że aby wywołać "normalną" zmienną klasy, musisz mieć najpierw utworzony obiekt:
Zmienna statyczna (tak samo jak funkcja) to pewne miejsce w pamięci komputera i jest związane z klasą, nie z obiektem, co skutkuje tym, że nie musi istnieć egzemplarz klasy:
I odnosisz się do tej funkcji/zmiennej poprzez operator zakresu '::'. Także Twoje pytanie co jest lepsze nie za bardzo miało sens, powinieneś je bardziej sprecyzować. NuLL nie jest złośliwy, wielokrotnie pomaga ludziom, irytują go niemądre pytania (podobnie jak mnie) @envp : przecież nie każdy musi korzystać z sigletona ![]() BTW: A dlaczego koledzy envp i Null używają słowa "metoda" ? ![]() ![]() -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Cytat @envp : przecież nie każdy musi korzystać z sigletona tongue.gif BTW: A dlaczego koledzy envp i Null używają słowa "metoda" ? tongue.gif zamiast np. funkcja członkowska tongue.gif @TomASS Nie każdy musi korzystać z singletona, bo jak wiadomo obiekty możemy przekazywać przez referencję, ale to już jest chyba w pełni zamienne(?) Poza tym chyba singleton jest wygodny ![]() funkcja członkowska ? ![]() Pozdrawiam, Kamil |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
@envp - hmm... w zasadzie nazwanie konstrukcji 'static function' metodą jest mało precyzyjne.
Metody w sensie działania, akcji - posiada obiekt. Powiedzenie funkcja statyczna klasy jest chyba dobre, ale dlaczego funkcja członkowska? Możesz to rozwinąć TomASS? Pozdrawiam. Ten post edytował Cysiaczek 17.11.2006, 09:04:41 -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Cytat Poza tym chyba singleton jest wygodny Pewnie że jest ![]() Co do funkcji członkowskich (składowych) Chodziło mi o ironię ![]() ![]() Przeczytałem to po prostu w jednej mądrej książce. Słowo funkcja składowa (członkowska) pochodzi z C++, gdzie w 700 stronnicowym opisie standardu zawsze używany jest termin "member function". Słowo "metoda", w tym znaczeniu, pochodzi ze starszych języków, jej zwolennicy argumentują takie nazewnictwo, że funkcje należące do klasy/obiektu to tak jakby sposób postępowania (metoda) z obiektem przez użytkownika. Ale w takim razie prywatne "member function" jak nazwać? Przecież nie są to metody postępowania z obiektem przez użytkownika klasy. Ten post edytował TomASS 17.11.2006, 09:44:26 -------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 4.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Drodzy koledzy
po pierwsze - zauważcie że nie napisałem - lepsze tylko "lepsze" - chciałem sprowokować Was do takiej właśnie dyskusji. Jestem pewien, że sporo osób (początkujących przedewszystkim) będzie Wam za nią wdzięcznych. po drugie - spójżcie na własne posty a na post NULL-a, z których można się czegoś dowiedzieć ? po trzecie - zaglądam i do manuala i do "php i MySQL - Tworzenie stron WWW - Vademecum profesjonalisty" Skąd takie pytanie ? Trafiłem wczoraj na http://ilia.ws/talks.php i przejżałem m.in. http://ilia.ws/files/zend_performance.pdf i przetestowałem ten przykład :
Sądzę, że wszyscy którzy o tym nie wiedzieli a uruchomią sobie ten przykład zaczną od teraz zastanawiać się czy akurat u nich co niektórych metod nie dałoby się zrobić statycznych. No cóż 300-400% szybciej, chyba jest nad czym się zastanawiać ? -------------------- php 5.1.6
|
|
|
![]()
Post
#11
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
No nie no jak takie coś wypisujesz to się nie dziwię, że takie czasy masz.
Napisz to po ludzku i potem zmierz czasy ![]()
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Sądzę, że wszyscy którzy o tym nie wiedzieli a uruchomią sobie ten przykład zaczną od teraz zastanawiać się czy akurat u nich co niektórych metod nie dałoby się zrobić statycznych. ![]() Teraz ja podam przyklad: mam w domu dwa mlotki: jeden prawdziwy, drugi zabawka (plastikowy). Teraz zabieram sie do wbijania prawdziwego gwoździa do prawdziwej deski. No i mierze czas, ktorym mlotkiem bedzie szybciej. Ciekawe jakie beda wyniki ![]() Tak samo u ciebie. porownujesz czasy dwoch rzeczy, ktore sa stworzone zupelnie do innych rzeczy. Jak cos ma byc static, to sie mowi ze to ma byc static. To chyba logiczne. Jak cos ma nie byc static, to sie tego nie wywoluje jako static i juz. Jedyne czym mnie zszokowales w tym przykladzie to fakt, ze php pozwala na wywolywanie nie statycznych metod jako statyczne i to bez nawet zadnego NOTICE. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 4.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze raz :
to nie mój przykład tylko autora PDF-a. Wydawało mi się że Ilja Alshanetsky to facet który o php coś wie ? Może się mylę ? Może ktoś mnie wyprowadzi z błędu ? -------------------- php 5.1.6
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
No właśnie mnie też to zszokowało. Pozostałość po php 4 jak sądzę... Choć wydaje się, że php sprawdza jedynie, czy funkcja zawiera jakieś odwołania w kontekście obiektu (przy deklaracji) i dopiero wtedy wyrzuca błąd. Mogę się jednak mylić.
-------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
ale czy ja mowie ze to zly facet? Ja mowie to co on przy pomocy tego przykladu:
jak cos ma byc static to masz to deklarowac jako static i juz. to logiczne, nawet dla Puchatka ![]() tak wiec twoje pytanie: Cytat co "lepsze" jest bez sensu, jak juz ci wyjasniono. wszystko zalezy od tego jak dana funckaj ma byc uzywanatak jak z moimi mlotkami: zaden nie jest lepszy, zalezy od uzycia. jak bede wbijal prawdziwe gwoździe to wezme prawdziwy mlotek, jak bede sie bawil z corką w klocki, to wezme zabawkowy mlotek -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#16
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
~koala przede wszystkim jak chcesz wywołać dyskusję na jakiś temat to nie zadawaj takich pytań bez słowa wyjaśnienia.
Skąd ktoś co Ci odpowiada ma wiedzieć, że Ty wspaniałomyślnie poruszasz nasze szare komórki na potrzeby ludzkości. Ilja Alshanetsky oczywiście jest autorytetem jeśli chodzi o php, ale nie wszystko co pisze to dogmaty. Kolejna sprawa że wyciąłeś ten fragment z kontekstu. A tam było napisane: Always declare your static methods! W tym przypadku przesłanie jest jasne. php jest ułomne i pozwala Ci na głupoty ale tego nie rób! Zawsze deklaruj metody jako statyczne jeśli będziesz chciał/potrzebował odwoływać się do nich w statyczny sposób, bo jak tego nie zrobisz to będzie lipa ![]() Nie rozumiem co w tym dziwnego i poruszającego, poza kolejną ułomnością php ? |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 4.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
~mike_mech obiecuję już nigdy więcej
![]() Wydaje mi się że nie dla wszystkich jest to takie oczywiste. Jak przeczytają ten topic i zaglądną do takiej klasy jak np. final class Zend to będą wiedzieli dlaczego ona jest taka a nie inna. Przecież można by ją zrobić nie jako singleton i też by wszystko działało ale po co wolniej jak można szybciej. -------------------- php 5.1.6
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
~koala: wez poczytaj o czym piszesz, bo tym razem mieszasz klasy finalne (final class) z singletonami. Nierozszerzalna klasa to nie klasa, ktora pozwala na tylko jedna swoja instancje.
Kod ma byc po pierwsze czytelny i zrozumialy dla czlowieka (dzieki czemu bedziesz mogl go optymalizowac, ale nie hakami jak ten, tylko zmiana algorytmu, cachowaniem wynikow, itp.) a nie tylko maksymalnie wydajny. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Z testów wynika, że funkcje statyczne są wolniejsze od metod.. Czas waha się od 2 do kilkunastu sekund przy zwiększonym przebiegu pętli i odpaleniu skryptu na 3 przeglądarkach..
-------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 5.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
To dość stary temat pomyślałem jednak że coś napiszę od siebie.
Drodzy panowie myślę że można to interpretować jako pewną funkcjonalności PHP. Może właśnie dlatego nazwy: Dynamic Static Method - te które dynamicznie stają się statyczne poprzez wywołanie ich w sposób statyczny Declared Static Method - te które które deklarujemy jako statyczne i jako takie wywołujemy Oczywiście z naciskiem na używanie tych drugich z racji czytelności i czasów. W razie czego mamy jednak taką możliwość w ostatecznej ostateczności ![]() Co do postawionego pytania to fakt mogłoby zostać postawione w bardziej doprecyzowany sposób. Nie wchodzie jednak zaraz komuś na głowę. Może warto by było po prostu dopytać. Co do tych wywołań to działa to w obie strony ![]()
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 16:32 |