cURL on väga populaarne PHP teek, millele olen viidanud mitmetes postitustes (näiteks 1 ja 2 ). Ja see on üks, mida minu arvates peaksid kõik PHP-s töötavad inimesed (jah, isegi WordPressis töötavad) üle vaatama, uurima ja võib-olla kasutama.
Kuid WordPressi algse API-de tõttu on meil abstraktsioonitase, mis võimaldab meil saavutada suures osas samu funktsioone (kui mitte sama funktsiooni).
Täpsemalt, ma räägin wp_safe_remote_get.
See funktsioon on ideaalne, kui HTTP-päring tehakse suvalisele URL-ile. URL on kinnitatud, et vältida ümbersuunamist ja taotleda võltsimisrünnakuid.
Mainin konkreetselt selle funktsiooni ohutut varianti ülaltoodud definitsiooni jaoks (on veel üks variant, kuid turvalisuse huvides on oluline võtta ettevaatusabinõusid suvaliste URL-ide vastu).
cURL-i ja WordPressi taotlused
Igatahes, milline võiks funktsioon välja näha, kui kasutaksime seda cURL-i teeki?
<?php
try {
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($curl);
if (is_object($response)) {
return false;
}
if (false === $response) {
throw new Exception(curl_error($curl), curl_errno($curl));
}
curl_close($curl);
} catch (Exception $e) {
trigger_error(
sprintf(
'Curl failed with error #%d: %s',
$e->getCode(),
$e->getMessage()
),
E_USER_ERROR
);
}
Lühidalt (ja see on tüüpiline enamiku cURL-i päringute jaoks):
- lähtestage cURL-i teek,
- määrake oma päringule vastavad valikud (mis sõltuvad nimetatud päringust),
- esitada taotlus,
- hinnata vastust
- tabada kõik vajalikud erandid.
Ja kui me kasutaksime WordPressis sama koodi variatsiooni ?
<?php
$response = wp_safe_remote_get($url);
if (is_wp_error($response)) {
return '';
}
$response = $response['body'];
See on palju väiksem ja vaieldamatult hõlpsamini loetav (vähemalt neile, kes töötavad WordPressis). Argumentide osas ei anna ma ka funktsioonile midagi peale URL-i.
Kui loete lingitud API dokumentatsiooni, näete, et meil on selle üle teatud kontroll; see aga varieerub sõltuvalt sellest, kuidas peate antud lõpp-punktiga suhtlema.
Lisaks on teie otsustada, kuidas WP_Errori käsitlete. Tühja stringi tagastamine on harva parim valik; selle näite jaoks on see aga piisav. Juhtum, mida me peamiselt otsime, on vastuse põhiosa ja see on koodi keskmes.
Millal me kasutame üht või teist?
CURL-i ja WordPressi kaugpäringutega töötamisel ning kasutatava meetodi määramisel järgin tavaliselt järgmist reeglit:
- Kui seda, mida ma vajan, on võimalik saavutada WordPressi API funktsiooniga, kasutan seda.
- Kui ei, siis kasutan cURL-i.
Ma ei oska kindlamat reeglit pakkuda.
Selle asemel vaadake lõpp-punkti, millega suhtlete, tehke kindlaks, millisel tasemel kontrolli päringu üle vajate, ja tehke otsus, kuidas soovite vastust käsitleda.
Sealt edasi peaks teil olema hea idee, millist raamatukogu kasutada.
