Pozorný vykonajte akciu php. PHP a formuláre. OOP, triedy, objekty a anonymné funkcie

Pozorný vykonajte akciu php.  PHP a formuláre.  OOP, triedy, objekty a anonymné funkcie
Pozorný vykonajte akciu php. PHP a formuláre. OOP, triedy, objekty a anonymné funkcie

pred 4 rokmi

Slučky do-while možno použiť aj v iných slučkách, napríklad:



Táto verzia je ľahšie čitateľná a zrozumiteľnejšia. A argumenty pre golfový kód sú neplatné, rovnako ako táto verzia je o 3 riadky kratšia.

Na záver, aj keď určite môžete napísať kód, ktorý zneužíva kľúčové slovo `break`, v praxi by ste nemali udržiavať kód ľahko čitateľný a zrozumiteľný pre každého, kto zdedí váš kód. A pamätajte, že kód je pre ľudí, nie pre počítače.

pred 10 rokmi

Niekedy som vinný z toho, že píšem konštrukcie bez zložených zátvoriek... písanie do--zatiaľ čo bez zložených zátvoriek (( ​​a )) sa mi zdalo trochu zvláštne, ale len aby si každý bol vedomý toho, ako sa to píše s do-- zatiaľ čo...

normálna chvíľa:


robiť--kým:


Tiež praktický príklad, kedy použiť do – zatiaľ čo, keď jednoduchá chvíľa jednoducho nebude robiť (lol)... kopírovanie viacerých uzlov 2. úrovne z jedného dokumentu do druhého pomocou rozšírenia DOM XML

24,6 tis

Nie je žiadnym tajomstvom, že najbežnejším spôsobom interakcie HTML stránky s webovou stránkou je formulár. Formulár (teda prvok HTML tvorený značkou formulára) využívajú aj bezplatné e-mailové služby, elektronické obchody a mnohé ďalšie typy stránok.

Spracovanie jednoduchých formulárov pomocou PHP je jednoduché. Z času na čas však vzniká potreba spracovať formulár obsahujúci viacero polí rovnakého typu, napriek tomu, že ich počet sa môže meniť v širokom rozmedzí a ich počet nie je vopred známy. Pre takéto prípady PHP poskytuje spracovanie polí rovnakého typu ako pole hodnôt.


Pozrime sa bližšie na možnosti pre rôzne typy polí. Textové polia

V tomto článku sú textové polia definované ako prvky vytvorené vstupnými značkami s hodnotou parametra typu text a značkou textarea. Najjednoduchšie je zorganizovať spracovanie formulára pozostávajúceho z niekoľkých takýchto polí. Výpis nižšie zobrazuje výpis s html označením pre takýto formulár.






Ako môžete vidieť zo zoznamu, názvy prvkov formulára sú z pohľadu PHP prvkami poľa. Preto PHP skript, ktorý spracuje tento formulár, bude považovať všetky textové polia tohto formulára za jedno pole. K jednotlivým prvkom je možné pristupovať pomocou indexu alebo enumerovať pomocou zoznamu a jednotlivých príkazov, ako v nasledujúcom príklade.

Prepínače

V tomto článku sú začiarkavacie políčka prvky vytvorené vo vstupných značkách s parametrom type nastaveným na začiarkavacie políčko . Formulár na použitie premenlivého počtu „prepínačov“ je zostavený presne rovnakým spôsobom. Upozorňujeme, že výber konkrétnej hodnoty prepínača (teda hodnoty vlastnosti value) nie je dôležitý. Príklad je uvedený v zozname nižšie:






Spracovanie takéhoto formulára sa však líši od spracovania opísaného pre textové polia. V tomto prípade je potrebné zistiť, či návštevník stránky zapol ten či onen prepínač. Ak je povolené, potom príslušný prvok poľa existuje, ak nie, potom chýba. Nasledujúci zoznam je príklad PHP skriptu, ktorý vytlačí povolené prepínače:

Prepínače

Pred popisom spracovania prepínačov je potrebné pripomenúť, ako fungujú. Podstatou prepínačov (prvkov vytvorených vstupnými tagmi s hodnotou parametra typu rovnajúcu sa rádiu ) je, že výberom jedného tlačidla používateľ automaticky odznačí ďalšie tlačidlo z rovnakej množiny. Tlačidlá sa kombinujú do sady veľmi jednoducho: všetky tlačidlá v súprave majú rovnaký názov.

Ale hodnoty (to znamená parametre hodnôt) tlačidiel v súprave sú odlišné. A hodnota vybraného tlačidla s názvom sady bude odoslaná na stránku. Rovnako ako v prípade textových polí a prepínačov by mali byť názvy sád prepínačov formátované ako názvy prvkov poľa v PHP. Príklad takéhoto formulára je uvedený v nasledujúcom zozname:

// prvá skupina tlačidiel
// druhá sada tlačidiel
// tretia sada tlačidiel

Spracovanie prepínačov kombinuje myšlienky používania textových polí a prepínačov pri spracovaní. Ak autor html stránky nenastavil predvolenú hodnotu a používateľ nevybral konkrétne tlačidlo v skupine prepínačov, potom tento prvok nebude v poli (ako v prípade prepínačov).

Jednou zo skvelých vecí na PHP je spôsob, akým pracuje s HTML formulármi. Hlavná vec je, že každý prvok formulára sa automaticky sprístupní vašim programom PHP. Podrobné informácie o používaní formulárov v PHP nájdete v časti. Tu je príklad HTML formulára:

Príklad č. 1 Najjednoduchší HTML formulár

Tvoje meno:

Tvoj vek:

Na tejto forme nie je nič zvláštne. Toto je bežný HTML formulár bez špeciálnych značiek. Keď používateľ vyplní formulár a klikne na tlačidlo Odoslať, zavolá sa stránka action.php. Tento súbor môže mať niečo ako:

Príklad č. 2 Zobrazenie údajov formulára

Ahoj, .
Si starý.

Príklad výstupu tohto programu:

Dobrý deň, Sergey. Máte 30 rokov.

Ak neberiete do úvahy kúsky kódu s htmlspecialchars() a (int), princíp fungovania tohto kódu by mal byť jednoduchý a zrozumiteľný. htmlspecialchars() zaisťuje, že „špeciálne“ znaky HTML sú správne zakódované, aby sa na vašu stránku nevložil škodlivý kód HTML alebo Javascript. Vekové pole, o ktorom vieme, že by malo byť číslo, môžeme jednoducho previesť na celé číslo, čím sa automaticky zbavíme nechcených znakov. PHP to môže urobiť aj automaticky pomocou rozšírenia filtra. Premenné $_POST["name"] a $_POST["age"] za vás automaticky nastaví PHP. Predtým sme používali superglobálnu premennú $_SERVER, ale tu používame aj superglobálnu premennú $_POST, ktorá obsahuje všetky POST dáta. Všimni si spôsob odoslania(metóda) nášho formulára je POST. Ak by sme použili metódu GET, potom by naše informácie z formulára boli v superglobálnej premennej $_GET . Prípadne môžete použiť premennú $_REQUEST, ak na zdroji údajov nezáleží. Táto premenná obsahuje zmes údajov GET, POST a COOKIE.

pred 15 rokmi

Podľa špecifikácie HTTP by ste mali použiť metódu POST, keď používate formulár na zmenu stavu niečoho na strane servera. Ak má napríklad stránka formulár umožňujúci používateľom pridávať vlastné komentáre, ako je tento Ak kliknete na "Znova načítať" alebo "Obnoviť" na stránke, na ktorú ste sa dostali prostredníctvom POST, takmer vždy ide o chybu -- nemali by ste ten istý komentár uverejňovať dvakrát -- čo je dôvod, prečo tieto stránky nie sú uložené ako záložky ani vo vyrovnávacej pamäti.

Metódu GET by ste mali použiť vtedy, keď váš formulár dostáva niečo zo servera a v skutočnosti nič nemení. Napríklad formulár pre vyhľadávací nástroj by mal používať GET, pretože vyhľadávanie na webovej lokalite by nemalo meniť nič, čo by klienta mohlo zaujímať, a ukladanie výsledkov dopytu vyhľadávacieho nástroja do medzipamäte je rovnako užitočné ako ukladanie do záložiek alebo do vyrovnávacej pamäte. statická HTML stránka.

pred 2 rokmi

Stojí za to objasniť:

POST nie je bezpečnejšie ako GET.

Dôvody pre výber GET verzus POST zahŕňajú rôzne faktory, ako je zámer požiadavky ("odosielate" informácie?), veľkosť požiadavky (existujú limity na to, ako dlho môže byť URL, a parametre GET sa odosielajú v adresu URL) a ako jednoducho chcete akciu zdieľať – napríklad vyhľadávanie Google je GET, pretože uľahčuje kopírovanie a zdieľanie vyhľadávacieho dopytu s niekým iným jednoduchým zdieľaním adresy URL.

Bezpečnosť sa tu berie do úvahy len kvôli skutočnosti, že GET je jednoduchšie zdieľať ako POST. Príklad: nechcete, aby GET posielal heslo, pretože používateľ môže zdieľať výslednú adresu URL a neúmyselne odhaliť svoje heslo.

GET a POST sú však rovnako ľahko zachytiteľné škodlivou osobou, ak nenasadíte TLS/SSL na ochranu samotného sieťového pripojenia.

Všetky formuláre odoslané cez HTTP (zvyčajne port 80) sú nezabezpečené a dnes (2017) nie je veľa dobrých dôvodov na to, aby verejná webová stránka nepoužívala HTTPS (čo je v podstate HTTP + Transport Layer Security).

Ako bonus, ak používate TLS, minimalizujete riziko, že vaši používatelia dostanú kód (AD) do vašej návštevnosti, ktorý ste tam nevložili vy.

Posledná aktualizácia: 1.11.2015

Jedným z hlavných spôsobov, ako webová lokalita prenáša údaje, je spracovanie formulárov. Formuláre predstavujú špeciálne prvky HTML značiek, ktoré obsahujú rôzne vstupné prvky – textové polia, tlačidlá atď. A pomocou týchto formulárov môžeme zadať nejaké údaje a odoslať ich na server. A server už tieto údaje spracováva.

Vytváranie formulárov pozostáva z nasledujúcich aspektov:

    Vytvorenie prvku v značke HTML

    Do tohto prvku pridajte jedno alebo viac vstupných polí

    Nastavenie spôsobu prenosu údajov: GET alebo POST

    Nastavenie adresy, na ktorú budú odoslané zadané údaje

Poďme teda vytvoriť nový formulár. Za týmto účelom si zadefinujeme nový súbor form.php, do ktorého umiestnime nasledujúci obsah:

Prihláste sa na stránku Prihlásenie:

heslo:

Atribút action="login.php" prvku formulára označuje, že údaje formulára budú spracované skriptom login.php, ktorý sa bude nachádzať pri súbore formulár.php v jednom priečinku. A atribút method="POST" označuje, že ako metóda prenosu údajov sa použije metóda POST.

Teraz vytvoríme súbor login.php, ktorá bude mať nasledujúci obsah:

Na získanie údajov formulára sa používa globálna premenná $_POST. Predstavuje asociatívne pole údajov odoslaných pomocou metódy POST. Pomocou kľúčov môžeme získať odoslané hodnoty. Kľúče v tomto poli sú hodnoty atribútov názvov polí zadávania formulára.

Keďže atribút name vstupného poľa login má hodnotu login(), potom v poli $_POST bude hodnota tohto poľa predstavovať kľúč "login": $_POST["login"]

A keďže môžu nastať situácie, keď vstupné pole nebude nastavené, napríklad pri prechode priamo do skriptu: http://localhost:8080/login.php. V tomto prípade je vhodné pred spracovaním údajov skontrolovať dostupnosť údajov pomocou funkcie isset(). A ak je premenná nastavená, funkcia isset() vráti true .

Teraz máme prístup k formuláru:

A po stlačení tlačidla sa zadané údaje odošlú do skriptu metódou POST. login.php:

Údaje formulára nie je potrebné odosielať do iného skriptu, údaje formulára môžete spracovať v rovnakom súbore formulára. Ak to chcete urobiť, zmeňte súbor formulár.php nasledujúcim spôsobom:

Prihláste sa na stránku Prihlásenie:

heslo:

Bezpečnosť údajov

Bezpečnosť dát je v PHP veľmi dôležitá. Pozrime sa na niekoľko jednoduchých mechanizmov, ktoré môžu zlepšiť bezpečnosť našej webovej stránky.

Najprv si však zoberme formulár z predchádzajúcej témy a skúsme doň zadať nejaké údaje. Zadajte napríklad „alert(hi);“ do poľa pre prihlásenie a „heslo“ do poľa pre heslo:

Po odoslaní údajov do html značky sa vloží javascriptový kód, ktorý zobrazí okno so správou.

Aby ste sa vyhli takýmto bezpečnostným problémom, mali by ste použiť funkciu htmlentities():

If(isset($_POST["login"]) && isset($_POST["heslo"]))( $login=htmlentities($_POST["login"]); $password = htmlentities($_POST["heslo" ]); echo "Vaše prihlásenie: $login
Vaše heslo: $password";)

A aj po zadaní kódu html alebo javascript budú všetky značky escapované a dostaneme nasledujúci výstup:

Ďalšia funkcia - funkcia strip_tags() vám umožňuje úplne vylúčiť html značky:

If(isset($_POST["login"]) && isset($_POST["heslo"]))( $login=strip_tags($_POST["login"]); $password = strip_tags($_POST["heslo" ]); echo "Vaše prihlásenie: $login
Vaše heslo: $password";)

Výsledkom jeho činnosti s rovnakým vstupom bude nasledujúci výstup.

RxGroovy má niekoľko variantov Do.

  • Javadoc:
  • Javadoc:

  • Javadoc:

Operátor doOnRequest (nový v RxGroovy 1.1) zaregistruje akciu, ktorá bude vyvolaná vždy, keď si pozorovateľ vyžiada ďalšie položky z výsledného pozorovateľného objektu. Táto akcia dostane ako parameter počet položiek, ktoré pozorovateľ požaduje.

  • Javadoc:

  • Javadoc:

  • Javadoc:

  • Javadoc:

  • Javadoc:

predtým

  • Javadoc:

po výsledný Observable sa ukončí, či už normálne alebo s chybou.

Vzorový kód

def čísla = Observable.from(); čísla.finallyDo(( println("Konečne"); )).subscribe(( println(it); ), // onNext ( println("Chyba: " + it.getMessage()); ), // onError ( println ("Sekvencia dokončená" ) // onCompleted);

1 2 3 4 5 Sekvencia dokončená Nakoniec

  • Javadoc:

RxJava má niekoľko variantov Do.

Operátor doOnEach vám umožňuje vytvoriť spätné volanie, ktoré bude výsledný Observable volať zakaždým, keď vydá položku. Toto spätné volanie môžete odovzdať buď vo forme akcie, ktorá berie ako svoj jediný parameter rôzne druhy oznámenia onNext, alebo môžete odovzdať pozorovateľovi, ktorého metóda onNext sa bude volať, ako keby sa prihlásil na odber Pozorovateľného.

  • Javadoc:
  • Javadoc:

Operátor doOnNext je podobný doOnEach(Akcia1), s výnimkou toho, že Akcia, ktorú odošlete ako parameter, neprijíma oznámenie, ale namiesto toho jednoducho prijíma emitovanú položku.

Vzorový kód

Observable.just(1, 2, 3).doOnNext(new Action1() ( @Override public void call(Integer item) ( if(item > 1) ( throw new RuntimeException("Item prekračuje maximálnu hodnotu"); ) ) ) ( "Chyba: " + error.getMessage()); @Override public void onCompleted() ( System.out.println("Sekvencia dokončená."); ) ));

Ďalej: 1 Chyba: Položka prekračuje maximálnu hodnotu

  • Javadoc:

Operátor doOnRequest (nový v RxJava 1.1) zaregistruje akciu, ktorá bude vyvolaná vždy, keď si pozorovateľ vyžiada ďalšie položky z výsledného pozorovateľného objektu. Táto akcia dostane ako parameter počet položiek, ktoré pozorovateľ požaduje.

  • Javadoc:

Operátor doOnSubscribe zaregistruje akciu, ktorá bude vyvolaná vždy, keď sa pozorovateľ prihlási na odber výsledného pozorovateľného objektu.

  • Javadoc:

Operátor doOnUnsubscribe zaregistruje akciu, ktorá bude vyvolaná vždy, keď sa pozorovateľ odhlási z výsledného pozorovateľného objektu.

  • Javadoc:

Operátor doOnCompleted zaregistruje akciu, ktorá bude vyvolaná, ak sa výsledný Observable ukončí normálne, a zavolá onCompleted .

  • Javadoc:

Operátor doOnError zaregistruje akciu, ktorá sa zavolá, ak sa výsledné pozorovateľné ukončí abnormálne, pričom zavolá onError . Táto akcia prejde ako vrhací predstavujúca chybu.

  • Javadoc:

Operátor doOnTerminate zaregistruje akciu, ktorá sa bude volať just predtým výsledný Observable sa ukončí, či už normálne alebo s chybou.

  • Javadoc:

konečneDo je zastarané od RxJava 1.1.1 v prospech doAfterTerminate s rovnakým správaním.

Operátor finalDo zaregistruje akciu, ktorá sa bude volať just po výsledný Observable sa ukončí, či už normálne alebo s chybou.

  • Javadoc:

Operátor doAfterTerminate zaregistruje akciu, ktorá sa bude volať just po výsledný Observable sa ukončí, či už normálne alebo s chybou.

  • Javadoc:


RxJS implementuje základný operátor Do ako do alebo tap (dva názvy pre rovnaký operátor). Na používanie tohto operátora máte dve možnosti:

  • Môžete ho odovzdať pozorovateľovi, v takom prípade tlačidlom / klepnutím zavoláte metódy tohto pozorovateľa, ako keby sa daný pozorovateľ prihlásil na odber výsledného pozorovateľa.
  • Môžete odovzdať množinu 1-3 jednotlivých funkcií (onNext , onError a onCompleted), ktoré do / tap zavolá spolu s podobne pomenovanými funkciami ktoréhokoľvek z jeho pozorovateľov.
  • Vzorový kód

    /* Použitie pozorovateľa */ var pozorovatel = Rx.Observer.create(funkcia (x) ( console.log("Pokračovať: %s", x); ), funkcia (chyba) ( console.log("Do Error : %s", err); ), funkcia () ( console.log("Do Completed"); )); var source = Rx.Observable.range(0, 3) .do(observer); var predplatné = source.subscribe(funkcia (x) ( console.log("Ďalší: %s", x); ), funkcia (chyba) ( console.log("Chyba: %s", chyba); ), funkcia () ( console.log("Dokončené"); ));

    /* Použitie funkcie */ var source = Rx.Observable.range(0, 3) .do(function (x) ( console.log("Do Next:", x); ), function (err) ( console. log("Do Error:", err ), function () ( console.log("Do Completed"); )); var predplatné = source.subscribe(funkcia (x) ( console.log("Ďalší: %s", x); ), funkcia (chyba) ( console.log("Chyba: %s", chyba); ), funkcia () ( console.log("Dokončené"); ));

    Ďalej: 0 Ďalej: 0 Urobiť Ďalej: 1 Ďalej: 1 Urobiť Ďalej: 2 Ďalej: 2 Urobiť Dokončené Dokončené


    RxJS tiež implementuje doOnNext alebo tapOnNext (dva názvy pre toho istého operátora). Ide o špecializovanú formu Do, ktorá reaguje iba na prípad onNext, volaním funkcie spätného volania, ktorú zadáte ako parameter. Môžete tiež voliteľne odovzdať druhý parameter, ktorý bude z pohľadu vašej funkcie spätného volania pri jej spustení objektom „ this “.

    Vzorový kód

    var source = Rx.Observable.range(0, 3) .doOnNext(funkcia () ( this.log("Pokračovať: %s", x); ), konzola); var predplatné = source.subscribe(funkcia (x) ( console.log("Ďalší: %s", x); ), funkcia (chyba) ( console.log("Chyba: %s", chyba); ), funkcia () ( console.log("Dokončené"); ));

    Ďalej: 0 Ďalej: 0 Urobiť Ďalej: 1 Ďalej: 1 Urobiť Ďalej: 2 Ďalej: 2 Dokončené


    RxJS tiež implementuje doOnError alebo tapOnError (dva názvy pre rovnaký operátor). Ide o špecializovanú formu Do, ktorá reaguje iba na prípad onError volaním funkcie spätného volania, ktorú zadáte ako parameter. Môžete tiež voliteľne odovzdať druhý parameter, ktorý bude z pohľadu vašej funkcie spätného volania pri jej spustení objektom „ this “.

    Vzorový kód

    var source = Rx.Observable.throw(new Error()); .doOnError(funkcia (chyba) ( this.log("Chyba vykonania: %s", chyba); ), konzola); var predplatné = source.subscribe(funkcia (x) ( console.log("Ďalší: %s", x); ), funkcia (chyba) ( console.log("Chyba: %s", chyba); ), funkcia () ( console.log("Dokončené"); ));

    Do Error: Error Error: Error


    RxJS tiež implementuje doOnCompleted alebo tapOnCompleted (dva názvy pre rovnakého operátora). Ide o špecializovanú formu Do, ktorá reaguje iba na prípad onCompleted volaním funkcie spätného volania, ktorú zadáte ako parameter. Môžete tiež voliteľne odovzdať druhý parameter, ktorý bude z pohľadu vašej funkcie spätného volania pri jej spustení objektom „ this “.

    Vzorový kód

    var source = Rx.Observable.range(0, 3) .doOnCompleted(function () ( this.log("Do Completed"); ), konzola); var predplatné = source.subscribe(funkcia (x) ( console.log("Ďalší: %s", x); ), funkcia (chyba) ( console.log("Chyba: %s", chyba); ), funkcia () ( console.log("Dokončené"); ));

    Ďalej: 0 Ďalej: 1 Ďalej: 2 Do Dokončené Dokončené


    RxJS tiež implementuje operátor konečne. Vyžaduje funkciu, ktorá sa zavolá po ukončení výsledného Observable, či už normálne (onCompleted) alebo abnormálne (onError).

    Vzorový kód

    var source = Rx.Observable.throw(new Error()) .finally(function () ( console.log("Finally"); )); var predplatné = source.subscribe(funkcia (x) ( console.log("Ďalej: " + x); ), funkcia (chyba) ( console.log("Chyba: " + chyba);), funkcia () ( konzola .log("Dokončené");

    Chyba: Nakoniec chyba

    do / tap , doOnNext / tapOnNext , doOnError / tapOnError , doOnCompleted / tapOnCompleted a nakoniec sa nachádzajú v každej z nasledujúcich distribúcií:

    • rx.js
    • rx.all.js
    • rx.all.compat.js
    • rx.compat.js
    • rx.lite.js
    • rx.lite.compat.js

    RxPHP implementuje tento operátor rovnako ako .

    Vyvolá akciu pre každý prvok v pozorovateľnej sekvencii a vyvolá akciu po elegantnom alebo výnimočnom ukončení pozorovateľnej sekvencie. Táto metóda môže byť použitá na ladenie, protokolovanie atď. správania dotazov zachytením toku správ na spustenie ľubovoľných akcií pre správy v potrubí. Pri používaní do je dôležité si uvedomiť, že pozorovateľ môže prijímať ďalšie udalosti po dokončení streamu alebo chybe (napríklad pri použití opakovania alebo opätovného prihlásenia na odber). Ak používate Observable, ktorá rozširuje AbstractObservable, nebudete dostávať tieto udalosti. Pre tento špeciálny prípad použite DoObserver. doOnNext, doOnError a doOnCompleted interne používajú DoObserver a budú prijímať tieto dodatočné udalosti.

    Vzorový kód

    //z https://github.com/ReactiveX/RxPHP/blob/master/demo/do/do.php $source = \Rx\Observable::range(0, 3) ->do(function ($x) ( echo "Do Next:", $x, PHP_EOL; ), funkcia (Throwable $err) ( echo "Do Error:", $err->getMessage(), PHP_EOL; ), funkcia () ( echo "Do Completed" , PHP_EOL )); $subscription = $source->subscribe($stdoutObserver);

    Urobiť Ďalej:0 Ďalšia hodnota: 0 Urobiť Ďalej:1 Ďalšia hodnota: 1 Urobiť Ďalej:2 Ďalšia hodnota: 2 Urobiť Dokončené Dokončené!

    RxPHP má tiež operátor doOnError .

    Vzorový kód

    //z https://github.com/ReactiveX/RxPHP/blob/master/demo/do/doOnError.php $source = \Rx\Observable::error(new Exception("Oops")) ->doOnError(function (Vhodiť $err) ( echo "Do Error:", $err->getMessage(), PHP_EOL; )); $subscription = $source->subscribe($stdoutObserver);

    Do Error:Oops Výnimka:Oops

    RxPHP má tiež operátora doOnCompleted .

    Vzorový kód

    //z https://github.com/ReactiveX/RxPHP/blob/master/demo/do/doOnCompleted.php $source = \Rx\Observable::empty() ->doOnCompleted(function () ( echo "Do Completed ", PHP_EOL; )); $subscription = $source->subscribe($stdoutObserver);

    Dokončiť dokončené!

    RxPHP má tiež konečne operátora.

    Zavolá špecifikovanú funkciu, keď sa zdroj ukončí pri dokončení alebo chybe.

    Vzorový kód

    //z https://github.com/ReactiveX/RxPHP/blob/master/demo/finally/finally.php Rx\Observable::range(1, 3) ->finally(function() ( echo "Konečne\n "; )) ->subscribe($stdoutObserver);

    Ďalšia hodnota: 1 Ďalšia hodnota: 2 Ďalšia hodnota: 3 Hotovo! Konečne

    //z https://github.com/ReactiveX/RxPHP/blob/master/demo/finally/finally-error.php Rx\Observable::range(1, 3) ->map(function($value) (​ ​if ($value == 2) ( throw new \Exception("error"); ) return $value )) ->finally(function() (echo "Finally\n"; )) ->subscribe($stdoutObserver) ;

    Ďalšia hodnota: 1 Výnimka: chyba Nakoniec