[php] Instrukcja "goto"

0

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.

0

http://pl2.php.net/break

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
}
?>
0

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.

0
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".

0
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.

0

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.

0
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..

0

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 :).

0
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.

0

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 ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1