PHP

Programmeerimiskeel

PHP on olnud mitme veebirakenduse põhiosa juba üle kahe aastakümne. Seetõttu pole üllatav, et on välja kujunenud meetodid ja tehnikad veebikommunikatsiooniga, sealhulgas HTTP staatusekoodidega, tegelemiseks.

HTTP staatusekoodide tähtsus

Enne kui sukeldume sügavamalt PHP-sse, selgitame HTTP staatusekoodide eesmärki ja tähtsust. Need on olulised vahendid veebiserveri ja veebibrauseri suhtluses, kuna nad annavad teavet selle kohta, mis juhtus päringuga.

On mitu staatusekoodide klassi:

  • 2xx (Edukas): Näitab, et päring töödeldi edukalt.
  • 3xx (Suunamine): Viitab sellele, et täiendavaid toiminguid tuleb päringu lõpuleviimiseks teha.
  • 4xx (Kliendivea): Need koodid näitavad, et päringul esines probleem, sageli kasutaja vigade tõttu.
  • 5xx (Serverivea): Siin on server tuvastanud, et ta tegi vea või ei saa muul põhjusel päringut täita.

PHP ja staatusekoodid: Ajalooline ülevaade

PHP algusaegadel, kaua enne raamistikke ja ulatuslikke teegid, mida tänapäeval tunneme, pidid arendajad toetuma keele põhifunktsioonidele, et seada HTTP staatusekoode. Selles mängis keskset rolli funktsioon header().

Funktsioon header() võimaldab saata töötlemata HTTP päiseid. Staatusekoodide seadmine nägi välja selline:

header('HTTP/1.0 404 Not Found‘);

Teine tavaline käsitsi seatud staatusekood oli 301 suunamiskood, mida sageli kasutatakse SEO eesmärkidel:

header('HTTP/1.0 301 Moved Permanently‘);
header('Location: /new-url.php‘);

Kuid sellel lähenemisel oli mitmeid puudusi:

Evolution: http_response_code() funktsiooni sisseviimine Aja jooksul ja PHP mootori edasise arenguga mõistis PHP kogukond, et see tegevus tuleb lihtsustada ja vähem vigadega muuta. Sellest tulenes http_response_code() funktsiooni loomine.

Selle funktsiooni abil saab staatusekoodi lihtsalt määrata, pakkudes lihtsalt numbrilist koodi:

http_response_code(404);

Selle meetodi eelised on selged:

Modernse PHP lisatugi

Kuigi http_response_code() on selge edasiminek, on paljudel kaasaegsetel PHP raamistikel ja teekidel oma meetodid ja tööriistad HTTP staatusekoodidega tegelemiseks. Need pakuvad sageli veelgi kõrgemaid abstraktsioonitasemeid ja täiendavaid abifunktsioone.

Näiteks Laraveli raamistikus:

return response('Not Found', 404);

Või Symfony raamistikus:

return new Response('Not Found', 404);

Need kaasaegsed raamistikud ja nende meetodid pakuvad suuremat järjepidevust, paremaid testimisvõimalusi ja tihedamat integreerimist veebirakenduse muude osadega.

Kokkuvõttes on PHP aastatega läbi teinud märkimisväärse arengu: alates staatusekoodide seadmise tundlikest ja manuaalsetest tehnikatest kuni tänapäeval märksa intuitiivsemate ja usaldusväärsemate meetoditeni.

Parimad tavad

Levinud probleemid ja lahendused

Oma staatusekoodide loomine

HTTP-protokoll määratleb standardse rea staatusekoode, mis on ette nähtud konkreetseteks olukordadeks. Kuid mis siis, kui tunnete, et ükski neist koodidest ei väljenda täpselt seda, mida soovite edastada? Siin tuleb arutlusele, kas ja kuidas saate PHP-s luua oma staatusekoode.

Kuidas seda teha:

Tehniliselt saate header() funktsiooniga saata ükskõik millise kolmekohalise staatusekoodi koos sõnumiga:

header('HTTP/1.1 599 Kohandatud staatuse sõnum‘);

Selles näites saadetakse staatusekood "599" koos sõnumiga "Kohandatud staatuse sõnum".

Kas peaksite seda tegema?

Üldiselt ei soovitata oma staatusekoode luua. Selleks on mitu põhjust:

Kuigi PHP võimaldab teil paindlikkust luua oma staatusekoode, on enamikul juhtudel kõige parem jääda juba etteantud standardseid koode kasutama.

Kokkuvõte

HTTP staatusekoodide õige käsitsemine PHP-s on nii kunst kui ka teadus. Kuigi tehnilised aspektid, näiteks õige süntaksi ja funktsiooni kasutamine, on suhteliselt lihtsad, nõuab staatusekoodide õige haldamine keerukates rakendustes sügavat arusaamist nii HTTP-st kui ka konkreetsest rakendusest tulenevatest nõuetest. Arendajad, kes pühendavad aega staatusekoodide halduse peensusi mõistmaks ja valdamiseks, on paremas positsioonis, et luua tugevaid, kasutajasõbralikke veebirakendusi.

PHP: header

header('HTTP/1.0 404 Not Found‘);     
header('HTTP/1.0 301 Moved Permanently‘);
header('Location: /new-url.php‘);

PHP: http_response_code