Czy w PHP istnieje instrukcja goto?? Szukałem w manualu PHP i tu na forum, ale nigdzie nie znalazłem. Bardzo by mi ta instrukcja ułatwiła zadanie.
Unfortunately, PHP doesn't really offer any alternative to numbered break statements. Without line labels, there's no way to refer to a specific loop. There is also no "goto" statement in PHP. You could kludge your way around things with something like
<?php
do {
// some code
if ($condition)
break;
// some more code
} while (FALSE);
?>
or
<?php
switch ($dummy) {
default:
// some code
if ($condition)
break;
// some more code
}
?>
Obecnie tej techniki juz sie nie uzywa, kod staje sie strasznie nieczytelny, a samo dzialanie funkcje tez nie jest optymalne. Jesli ktos stosuje ta technike, to znaczy, ze sie zatrzymal w rozwoju i jest po prostu poczatkujacym. Obecnie programuje sie obiektowo a jezeli Tobie sprawia to problem to programuj chociaz proceduralnie a nie skacz po programie (kodzie) instrukcja goto.
ssnake napisał(a)
a samo dzialanie funkcje tez nie jest optymalne.
Mowa o goto? Chyba zartujesz, wytlumacz to.
ssnake napisał(a)
Jesli ktos stosuje ta technike, to znaczy, ze sie zatrzymal w rozwoju i jest po prostu poczatkujacym.
Ja robie duzo jumpow w asmie, to znaczy, ze zatrzymalem sie w rozwoju? Sry ale wypraszam sobie.
ssnake napisał(a)
Obecnie programuje sie obiektowo a jezeli Tobie sprawia to problem to programuj chociaz proceduralnie a nie skacz po programie (kodzie) instrukcja goto.
Programuje w C, przepraszam. Poza tym nie widze sensu w programowaniu obiektowym w jezykach skryptowych, strata zasobow imo, aczkolwiek jest to estetyczne i w php korzystam z "obiektowosci".
ssnake napisał(a)
(...) Jesli ktos stosuje ta technike, to znaczy, ze sie zatrzymal w rozwoju i jest po prostu poczatkujacym. Obecnie programuje sie obiektowo a jezeli Tobie sprawia to problem to programuj chociaz proceduralnie a nie skacz po programie (kodzie) instrukcja goto.
Ja nie chce skakac po programie. Chcialem wykonac jeden skok, a nie od razu skakac po programie. W szkole mnie uczyli, żeby nie używać instrukcji "goto" i tego się trzymałem. Wytrzymałem prawie rok piszac w PHP (i nie tylko), nie używając "goto". Jeszcze wczoraj wydawało mi się, że tylko "goto" rozwiąże sprawę. Po przespanej nocce udało mi się rowiązać problem w sposób prosty i jednocześnie mnie satysfakcjonujący.
Zadając pytanie czy istnieje instrukcja "goto" nie spodziewałem się, że ktoś od razu będzie wyciągał tak daleko idące wnioski. A wystarczyło tylko napisać, że: Nie ma!.
Ktoś kiedyś powiedział:
"Nie ma głupich pytań, tylko są głupie odpowiedzi".
Dziekuję za zainteresowanie moim pytaniem.
Niestety, ale ssnake ma racje. Jezeli piszesz w jezykach strukturalnych nie stosuje sie skokow, bo to oznacza, ze nie radzisz sobie rozwiazac danego problemu w sposob typowy dla danego jezyka.
Ktos pisze o asm. Wiadomo, ze tym jezyku (drugiej generacji) "skoki" to podstawa i nie ma co sie nad tym rozwodzic i porownywac do jezykow strukturalnych czy obiektowych bo to zupelnie inna bajka.
maniek_2 napisał(a)
Niestety, ale ssnake ma racje.
A ja kiedyś widziałem artykuł (niestety nie umiem go teraz znaleźć) o tym że używanie "przestarzałych" technik (goto, switch) bywa bardziej optymalne niż programowanie strukturalne (mowa o języku C).. dlatego w sumie wstrzymał bym sie od jednoznacznych osądów że to jest złe a tamto dobre..
Ogólnie rzecz ujmując w językach strukturalnych i obiektowych instrukcja skoku nie jest polecana. Jednak w niektórych (bardzo wyjątkowych) przypadkach pozwala na uproszczenie kodu (zazwyczaj efekt jest odwrotny) oraz zdecydowane oszczędzenie czasu i zasobów. Kiedyś pisał o tym ktoś z moderatorów (nie chcę skłamać, ale wydaje mi się, że Marooned). Temat nie dotyczył akurat PHP, ale dyskusja już dawno zeszła z jednego konkretnego języka programowania :).
Adam.Pilorz napisał(a)
Kiedyś pisał o tym ktoś z moderatorów (nie chcę skłamać, ale wydaje mi się, że Marooned).
Ha! A właśnie miałem przypomnieć tamtą wypowiedź [green] - gratulacje pamięci.
W pomocy do C++Buildera jest to opisane - zakończenie kilku zagnieżdżonych pętli jest po stokroć czytelniejsze instrukcją goto niż serią ifów i break'ów na każdym poziomie zagnieżdżenia.
Ale jak napisał Adam - jest to arcyrzadka przypadłość (mi się chyba nigdy nie zdarzyła - a piszę od ok. 12 lat).
Wolverine - nie bulwersuj się - tutaj mowa o językach wysokiego poziomu - Asm to inna para kaloszy (też coś o tym wiem :>).
A co do reakcji kflorek na wypowiedź ssnake.
Jeśli ktoś pyta o przestarzałą rzecz, która w ekstremalnych przypadkach się przydaje, to mamy 2 możliwości:
- uznać, że pytający zna się na rzeczy i odpowiadać rzeczowo [tu: gorion]
- uznać, że pytający jest początkującym i wytłumaczyć mu, co robi źle [tu: ssnake]
Co innego ludzie, których doświadczenie się zna, którzy często udzielaja się tu - im wiadomo jak odpowiadać. Jedak zapewne ani Gorion ani ssnake nie znają Ciebie na tyle, aby to ocenić - stąd 2 skrajne wypowiedzi.
Mam nadzieję, że to rozwiązuje wszelkie problemy.
ja dodam jeszcze ze odnosnie break'ow sa pewne przypadki uzasadnione w ktorych jednak jest warto je stosowac. Poniewaz nie zawsze estetyka a wydajnosc ida w parze ;) i czesto w programowaniu trzeba te zasady lekko naginac oczywiscie tylko zeby cos ulepszyc nie na odwrot bo to wtedy nie ma wiekszego sensu ;) Co do goto w pelni sie zgadzam nie jest juz stosowane a jak juz to rzadko no w PHP w ogole ;)