CREATEIT SOFTWARE
Symfony Armenian Community

By Createit.am

Symfony2ը և HTTP֊ի հիմնադրույթները

Շնորհավորանքներս! Սովորելով Symfony2, դու լավ, պրոդուկտիվ և հայտնի վեբ ծրագրավորող դառնալու ճանապարհին էս (վերջին մասը քո սեփական որոշումը կլինի)։ Սիմֆոնին կառուցվէլ է ակունքներ վերադառնալու համար։ Ստեղծվել են գործիքներ, որոնք թույլ են տալիս կառուցել ավելի հուսալի ծրագրեր։ Սիմֆոնին ստեղծված է բազմաթիվ տեխնոլոգիաների լավագույն լուծումների հիման վրա։ Երկու բառով՝ սովորելով սիմֆոնի դուք սովորում էք համացանցի հիմնունքները և ոչ միայն։
Այսպիսով, պատրաստվե՛ք։ Սիմֆոնիի փիլիսոփայությունը սկսկում է HTTP-ի և վեբ ծրագրավորման ընդհանուր գաղափարի բացատրությունից։ Նշանակություն չունի ինչ լեզվով էս գրում․ այս բաժինը պարտադիր է կարդալ բոլորի համար

HTTP-ն պարզ է

HTTP (Hypertext Transfer Protocol, Հիպերտեքստի տեղափոխման արձանագրություն), դա ինենից ներկայացնում է տեքստային լէզու, որը թույլ է տալիս երկու մեքենաների՝ շփվել իրար հետ։ Այսքանը։ օրինակ XKCD֊ին դիմելիս տեղի է ունենում մոտավորապես այսպիսի խոսակցություն ../_images/http-xkcd.png Միևնույն ժամանակ փաստացի լեզուն փոքր ինչ ֆորմալ է, այն շատ պարզ է։ HTTP-ն տերմին է որը օգտագործվում է այս տեքստային լեզուն նկարագրելու համար։ Եվ ինչ էլ որ անեք, Ձեր սպասառուի հիմնական նպատակը միշտ այն է, որ ստանա հարցումներ և վերադարցնի տեքստային պատասխաններ Սիմֆոնին ստեղծված է զրոյից այս իրականության շուրջը։ Հասկանում ես դու դա, թե չէ, սակայն դու այն օգտագործում ես ամեն օր։ Հիմա ավելի մանրամասն

Քայլ 1։ Կլիենտը ուղարկում է հարցում

Ցանկացած ինտերնետային խոսակցություն սկսվում է հարցումով, որը տեքստային հաղորդագրություն է՝ ստեղծված օգտատիրոջ կոմից, դա կարող է լինել բրաուզեր, այֆոն ծրագիր և այլն՝ հատուկ ֆորմատով, որը հայտնի է, ինչպես HTTP. Կլիենտը ուղարկում է հարցում, և սպասում պատասխանի։ Դիտեք հաղորդակցույթան առաջին մասի տեսքը ../_images/http-xkcd-request.png HTTP լեզվով այն  կունենա այսպիսի տեսք

 GET / HTTP/1.1 Host: xkcd.com Accept: text/html User-Agent: Mozilla/5.0 (Macintosh) 
Այս պարզ հաղորդագրությունը պարունակում է բոլոր անհրաժեշտ տեղեկատվությունը։ Առաջին տողում ամենկարևոր երկու բաներն են, URI-ը և HTTP մեթոդը:

URI-ը ռեսուրսի յուրահատուկ նույնացուցիչն է

Հիմնական մեթոդները

GET Ստանալ ռեսուրսը սպասառուից
POST  Ստեղծել ռեսուրս՝ սպասառուի վրա
PUT Թարմացնել ռեսուրսը սպասառուի վրա
DELETE Ջնջել ռեսուրսը սպասառուից



Օրինակ այս հարցումով մենք կարող ենք ջնջել 15 ID ունեցող բլոգային գրառումը

 
DELETE /blog/15 HTTP/1.1 
Իրականում շատ մոդեռն բրուզերներ չեն սպասարկում PUT և DELETE մեթոդները

Քայլ 2: Սպասառուն վերադարձնում է պատասխանը

Ստանալով հարցում՝ սպասառուն իմանում է, թե օգտվողը ինչ ռեսուրս է պահանջում և ինչ մեթոդով։ Սպասառուն մշակում է HTTP պատասխան, և վերադարձնում կլիենտին ../_images/http-xkcd.png Պատասխանը կունենա այսպիսի տեսք

 HTTP/1.1 200 OK Date: Sat, 02 Apr 2011 21:05:05 GMT Server: lighttpd/1.4.19 Content-Type: text/html    
HTTP պատասխանը պարունակում է հարցված ռեսուրսը և http գլխագրեր

Հարցումը և պատասխանը՝ PHP֊ում

պարզ օրինակ

 $uri = $_SERVER['REQUEST_URI'];
 $foo = $_GET['foo']; header('Content-type: text/html'); 
echo 'The URI requested is: '.$uri; 
echo 'The value of the "foo" parameter is: '.$foo; 

Հարցումը և պատասխանը՝ Սիմֆոնիում

Սիմֆոնին տրամադրում է սովորական PHP-ին ալտերնատիվ, միանգամից անցնենք կոդին

use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals();

// the URI being requested (e.g. /about) minus any query parameters
$request->getPathInfo();

// retrieve GET and POST variables respectively
$request->query->get('foo');
$request->request->get('bar', 'default value if bar does not exist');

// retrieve SERVER variables
$request->server->get('HTTP_HOST');

// retrieves an instance of UploadedFile identified by foo
$request->files->get('foo');

// retrieve a COOKIE value
$request->cookies->get('PHPSESSID');

// retrieve an HTTP request header, with normalized, lowercase keys
$request->headers->get('host');
$request->headers->get('content_type');

$request->getMethod(); // GET, POST, PUT, DELETE, HEAD
$request->getLanguages(); // an array of languages the client accepts
Սիմֆոնին նաև ունի Response դաս, որը կարելի է օգտագործել այս կերպ
use Symfony\Component\HttpFoundation\Response;
$response = new Response();

$response->setContent('Hello world!');
$response->setStatusCode(200);
$response->headers->set('Content-Type', 'text/html');

// prints the HTTP headers followed by the content
$response->send();
Վերջում տեղադրեմ հարցման և պատասխանի գրաֆը՝ սիմֆոնիում Symfony2 request flow

Մեկնաբանություններ (0)

Առայժմ մեկնաբանություններ չկան

Symfony.AM (c) 2016

tigran[@]symfony.am