Apie GOTO naudojimą, Php 5.3.0+
Taigi, Php 5.3.0 įtraukė GOTO, kaip JUMP label’į.
Gal ir nebūčiau rašęs šio įrašo, bet pačiam prisireikė labai keisto dalyko – perkelti kinamąjį į ankstesnį kodo tašką:
if(isset($var)) { $best_product_to_print = $var; <.. PRINT IT ..> }
$var = best_price_of_inserted(insert_lots_of_products($query_arr)));
Nelaimei su $output = ob_get_contents(); Php leidžia tik override’inti pvz. <title></title> tagu’s, bet ne užsettinti kintamuosius. Tad čia add_to_header(); function nepanaudosi.
PS. Jeigu kam nors kyla klausimas – kada to reikia, tai atsakau: jeigu įmonė pasirašo softą, ir jį pardavinėja krūvai įmonių. Po to kažkuriai vienai prisireikia pakeisti algoritmą kažkokiai vienai tos sistemos funkcijai. Kadangi niekas neduoda kišti nagų prie branduolio kodo, yra galimybė jį overridinti iš MODULIŲ kodo. Problema ta, kad iki šiol to pakako tik ob_get_content(); pagalba, replace’inant HTML turinį. ŠIUO ATVEJU irgi PAKAKTŲ perrašyti HTMLą. problema yra ta, kad failų ten yra šimtai, o perrašomų html kodo eilučių būtų tūkstančiai, kadangi priklausomai nuo parametrų algoritmui, skirtingas turinys yra generuojamas. Todėl logiškiausias dalykas būtų funkcija: submit_to_code_index(‘variable_name’,'variable_value’); Kadangi failai tarpusavyje bendrauja parametrų pagalba, reiktų periimti kodo valdymą, bei pateikti naujas parametro reikšmes.
Todėl pasiskaičiau keletą įdomesnių temų stackoverflow’e apie GOTO in Php.
http://stackoverflow.com/questions/723324/php-and-the-goto-statement-to-be-added-in-php-5-3
http://stackoverflow.com/questions/1900017/is-goto-in-php-evil
Ir kaip supratau, vienintelis siūlymas naudoti GOTO yra tik debug tikslais(net patys php dev’ą tą rašė). Kitaip tariant teisingiausiai GOTO apibūdino šis komentaras:
Unless you are programming in assembler, GOTO should always be treated the same way as the life vest of the airplanes: it is good to have them available, but if you need to use them it means that you are in big trouble.
Tas pats ir pluginų rašymas atgyvenusioms sistemoms – jeigu tau nurodo – nesvarbu kaip, privalai rasti sprendimą su tuo ką turi(šiuo atžvilgiu negali keisti branduolio kodo), tokiu atveju matyt galima būtų naudoti goto, arba kažkokiu kitu būdu perimti srautą( stackoverflowe iškėliau tokį klausimą).
Beje net patys Php dev’ai savo manual’e apie GOTO( /control-structures.goto.php ) yra įdėję:

Why not goto
Dar vienas komentaras iš StackOverFlow’o labai į temą:
in college i always used to use goto statements when i wanted to piss off my professors, muahahaha….the programs would of course still work perfectly but i could always see their eyes twitching when they’d come across those little statements – espais
Kitaip tariant, nėra pateisinamos priežasties naudoti goto, bet kartais nėra kitos išeities, jeigu nenori būtu ‘tuoju, kuris perkurs neteisingai veikiančią sistemą iš pagrindų‘. Tegu tai daro kiti
.