API Documentation
codesaur/http-client пакетийн бүрэн API баримт бичиг.
Тайлбар: Энэхүү API баримт бичиг нь Cursor AI-аар үүсгэгдсэн.
Namespace
codesaur\Http\Client
Classes
0. Response
HTTP хариуг обьект хэлбэрээр илэрхийлэх.
Description
Энэ класс нь CurlClient-ийн send() методоос буцаасан HTTP хариуг илэрхийлнэ. Status code, headers, body-д readonly хандалт олгоно.
Constructor
Signature:
public function __construct(
public readonly int $statusCode,
public readonly array $headers,
public readonly string $body
)
Parameters:
$statusCode(int) - HTTP статус код (200, 404, 500 гэх мэт)$headers(array<string, string>) - Хариуны HTTP headers$body(string) - Хариуны бие (response body)
Properties (readonly)
$statusCode(int) - HTTP статус код$headers(array) - Хариуны headers$body(string) - Хариуны бие
Methods
json()
Хариуны body-г JSON массив болгон decode хийх.
Signature: public function json(): ?array
Returns: Decode хийгдсэн массив, эсвэл null (JSON биш бол).
isOk()
Статус код 2xx (амжилттай) эсэхийг шалгах.
Signature: public function isOk(): bool
Returns: 200-299 хооронд бол true.
isError()
Статус код 4xx эсвэл 5xx (алдаа) эсэхийг шалгах.
Signature: public function isError(): bool
Returns: 400 ба түүнээс дээш бол true.
getHeader()
Тодорхой нэртэй header-ийн утгыг авах (том жижиг үсэг ялгахгүй).
Signature: public function getHeader(string $name, ?string $default = null): ?string
Parameters:
$name(string) - Header нэр (жишээ: 'Content-Type')$default(?string) - Header олдохгүй бол буцаах анхдагч утга
Returns: Header-ийн утга эсвэл анхдагч утга.
Example:
use codesaur\Http\Client\CurlClient;
$curl = new CurlClient();
$response = $curl->send('https://httpbin.org/get');
echo $response->statusCode; // 200
echo $response->body; // хариуны бие
print_r($response->json()); // JSON массив
echo $response->getHeader('Content-Type'); // "application/json"
if ($response->isOk()) {
// Амжилттай
}
if ($response->isError()) {
// Алдаатай
}
1. CurlClient
HTTP хүсэлт илгээх зориулалттай хөнгөн жинтэй cURL клиент.
Description
Энэ класс нь хүссэн URL рүү дурын HTTP методоор (GET, POST, PUT, PATCH, DELETE гэх мэт) хүсэлт илгээж, серверийн хариуг текст хэлбэрээр буцаана.
Methods
request()
Өгөгдсөн URL рүү HTTP хүсэлт илгээх үндсэн функц.
Signature:
public function request(
string $uri,
string $method = 'GET',
string $data = '',
array $options = []
): string
Parameters:
$uri(string) - Хүсэлт илгээх URL эсвэл endpoint$method(string) - Хэрэглэх HTTP метод (анхдагч -GET)$data(string) - Хүсэлттэй хамт илгээх өгөгдөл. Хэрэв хоосон биш болCURLOPT_POSTFIELDSтохиргоонд автоматаар нэмэгдэнэ$options(array<int|string, mixed>) - cURL-ийн нэмэлт тохиргоонууд. Жишээ нь:CURLOPT_TIMEOUT => 10CURLOPT_HTTPHEADER => ['Content-Type: application/json']
Returns:
string- Серверийн хариу (response body) зөв гүйцэтгэлтэй үед
Throws:
\Exception- cURL гүйцэтгэх явцад алдаа гарвалExceptionүүсгэнэ. Алдааны код ньcurl_errno(), алдааны текст ньcurl_error()-ийн утга байна
Example:
use codesaur\Http\Client\CurlClient;
$curl = new CurlClient();
// GET хүсэлт
$response = $curl->request('https://httpbin.org/get', 'GET');
echo $response;
// POST хүсэлт
$response = $curl->request(
'https://httpbin.org/post',
'POST',
'key=value',
[
CURLOPT_HTTPHEADER => ['Content-Type: application/x-www-form-urlencoded'],
CURLOPT_TIMEOUT => 30
]
);
send()
HTTP хүсэлт илгээж, Response обьект буцаах.
Signature:
public function send(
string $uri,
string $method = 'GET',
string|array $data = '',
array $options = []
): Response
request()-тэй адилхан ажилладаг боловч Response обьект буцаана. String эсвэл array өгөгдөл хүлээн авна (array нь файл upload-д multipart/form-data хэлбэрээр).
sendWithRetry()
Амжилтгүй хүсэлтийг дахин оролдох.
Signature:
public function sendWithRetry(
string $uri,
string $method = 'GET',
string|array $data = '',
array $options = [],
int $retries = 3,
int $delayMs = 500
): Response
Exponential backoff ашиглан автоматаар дахин оролдоно. 5xx серверийн алдааг дахин оролдох, 4xx клиент алдааг оролдохгүй.
upload()
Файл upload хийх.
Signature:
public function upload(
string $uri,
string $filePath,
string $fieldName = 'file',
array $fields = [],
array $options = []
): Response
CURLFile ашиглан multipart/form-data хэлбэрээр файл илгээнэ. Файл олдохгүй бол Exception шиднэ.
enableDebug()
Debug горимыг идэвхжүүлэх/унтраах.
Signature: public function enableDebug(bool $enable = true): static
Fluent interface буцаана.
getDebugLog()
Debug лог бичлэгүүдийг авах.
Signature: public function getDebugLog(): array
clearDebugLog()
Debug лог бичлэгүүдийг цэвэрлэх.
Signature: public function clearDebugLog(): static
Fluent interface буцаана.
2. JSONClient
JSON суурьтай HTTP хүсэлтүүд илгээх зориулалттай клиент.
Description
Энэхүү класс нь CurlClient дээр суурилан ажилладаг бөгөөд JSON payload-той GET, POST, PUT, PATCH, DELETE хүсэлтүүдийг хялбараар илгээж, серверийн хариуг PHP массив хэлбэрээр буцаана.
Алдаа гарсан тохиолдолд Exception шидэхийн оронд:
{
"error": {
"code": 123,
"message": "Алдаа үүссэн байна..."
}
}
хэлбэртэй массив буцаана.
Constructor
Signature: public function __construct(string $baseUrl = '')
Суурь URL тохируулах. Бүх хүсэлтийн URI-д автоматаар угтвар болно. Бүтэн URL (http/https) өгвөл суурь URL-г алгасна.
Methods
getBaseUrl()
Одоогийн суурь URL-г авах.
Signature: public function getBaseUrl(): string
get()
JSON GET хүсэлт илгээх.
Signature:
public function get(string $uri, array $payload = [], array $headers = [], array $options = []): array
Parameters:
$uri(string) - Хандах URL$payload(array) - Query string болгон нэмэгдэх өгөгдөл$headers(array) - Нэмэлт HTTP headers (name => valueхэлбэр)$options(array) - Нэмэлт cURL options (жишээ нь:CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1)
Returns:
array- Decode хийгдсэн JSON хариу эсвэл алдааны бүтэц
Example:
use codesaur\Http\Client\JSONClient;
$client = new JSONClient();
$response = $client->get(
'https://httpbin.org/get',
['hello' => 'world'],
['Authorization' => 'Bearer token123']
);
print_r($response);
// HTTP/1.1 хувилбар ашиглах (HTTP/2 алдаанаас сэргийлэх)
$response = $client->get(
'https://httpbin.org/get',
['test' => 'value'],
[],
[CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1]
);
post()
JSON POST хүсэлт илгээх.
Signature:
public function post(string $uri, array $payload, array $headers = [], array $options = []): array
Parameters:
$uri(string) - Хандах URL$payload(array) - JSON болгон илгээх өгөгдөл$headers(array) - Нэмэлт HTTP headers$options(array) - Нэмэлт cURL options (жишээ нь:CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1)
Returns:
array- Серверийн JSON хариу
Example:
$response = $client->post(
'https://httpbin.org/post',
['test' => 'codesaur'],
['X-Custom-Header' => 'value']
);
echo $response['json']['test']; // codesaur
// HTTP/1.1 хувилбар болон timeout тохируулах
$response = $client->post(
'https://api.example.com/endpoint',
['data' => 'value'],
['Authorization' => 'Bearer token'],
[
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_TIMEOUT => 30
]
);
put()
JSON PUT хүсэлт илгээх.
Signature:
public function put(string $uri, array $payload, array $headers = [], array $options = []): array
Parameters:
$uri(string) - Хандах URL$payload(array) - JSON болгон илгээх өгөгдөл$headers(array) - Нэмэлт HTTP headers$options(array) - Нэмэлт cURL options (жишээ нь:CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1)
Returns:
array- Серверийн JSON хариу
Example:
$response = $client->put(
'https://httpbin.org/put',
['id' => 1, 'name' => 'Updated Name']
);
patch()
JSON PATCH хүсэлт илгээх. Partial update хийхэд ашиглана.
Signature:
public function patch(string $uri, array $payload, array $headers = [], array $options = []): array
Parameters:
$uri(string) - Хандах URL$payload(array) - JSON болгон илгээх өгөгдөл$headers(array) - Нэмэлт HTTP headers$options(array) - Нэмэлт cURL options (жишээ нь:CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1)
Returns:
array- Серверийн JSON хариу
Example:
$response = $client->patch(
'https://httpbin.org/patch',
['name' => 'Partial Update']
);
delete()
JSON DELETE хүсэлт илгээх.
Signature:
public function delete(string $uri, array $payload, array $headers = [], array $options = []): array
Parameters:
$uri(string) - Хандах URL$payload(array) - JSON болгон илгээх өгөгдөл$headers(array) - Нэмэлт HTTP headers$options(array) - Нэмэлт cURL options (жишээ нь:CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1)
Returns:
array- Серверийн JSON хариу
Example:
$response = $client->delete(
'https://httpbin.org/delete',
['id' => 123]
);
request()
JSON HTTP хүсэлт илгээх үндсэн функц.
Signature:
public function request(string $uri, string $method, array $payload, array $headers, array $options = []): array
Parameters:
$uri(string) - Хүсэлт илгээх URL$method(string) - HTTP метод (GET, POST, PUT, PATCH, DELETE)$payload(array) - Илгээх өгөгдөл$headers(array) - Нэмэлт headers (key => value)$options(array) - Нэмэлт cURL options (жишээ нь:CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1)
Returns:
array- JSON decode хийгдсэн хариу массив, эсвэл:['error' => ['code' => ..., 'message' => ...]]
Features:
- Payload-ийг автоматаар JSON болгоно
- Content-Type: application/json header автоматаар нэмнэ
- SSL verify нь
CODESAUR_APP_ENVenvironment variable-аас хамаарна:developmentорчинд SSL verify унтраалттайproductionэсвэл бусад орчинд SSL verify идэвхтэй (аюулгүй)
- JSON decode алдааг шалгана
- Бүх алдааг нэг мөрөөр 'error' бүтэц болгон буцаана
- Нэмэлт cURL options дамжуулж болно (жишээ нь:
CURLOPT_HTTP_VERSION,CURLOPT_TIMEOUT)
Environment Configuration:
# .env файл эсвэл environment variable
CODESAUR_APP_ENV=development # эсвэл production
cURL Options:
Боломжит HTTP хувилбарын утгууд:
| Constant | Утга | Тайлбар |
|---|---|---|
CURL_HTTP_VERSION_NONE | 0 | cURL-д өөрөө сонгуулах |
CURL_HTTP_VERSION_1_0 | 1 | HTTP/1.0 |
CURL_HTTP_VERSION_1_1 | 2 | HTTP/1.1 |
CURL_HTTP_VERSION_2_0 | 3 | HTTP/2 |
CURL_HTTP_VERSION_2TLS | 4 | HTTP/2 (HTTPS-д зөвхөн) |
CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE | 5 | HTTP/2 negotiate-гүй |
3. Mail
PHP-ийн mail() функцийг ашиглан MIME стандарттай, хавсралт бүхий эсвэл энгийн имэйл илгээхэд зориулагдсан хөнгөн жинтэй имэйл клиент класс.
Description
Онцлогууд:
- To / Cc / Bcc хүлээн авагчид удирдах
- Элгэн (inline) болон олон төрлийн хавсралт дэмжих:
- file path ->
addFileAttachment() - URL ->
addUrlAttachment() - raw content ->
addContentAttachment()
- file path ->
- HTML болон plaintext имэйл илгээх
- UTF-8 encoded header & filename бүрэн дэмжлэг
- MIME multipart имэйл автоматаар үүсгэнэ
Properties
$recipients(private array) - Хүлээн авагчдын жагсаалт (To, Cc, Bcc)$from(protected string) - Илгээгчийн имэйл хаяг$fromName(protected string) - Илгээгчийн нэр$replyTo(protected string) - Хариу илгээх имэйл$replyToName(protected string) - Хариу илгээх нэр$subject(protected string) - Имэйл гарчиг$message(protected string) - Имэйл мессежийн гол агуулга$attachments(private array) - Хавсралтын жагсаалт
Methods
targetTo()
Олон хүлээн авагчийг reset хийж, зөвхөн нэг шинэ recipient оноох.
Signature:
public function targetTo(string $email, string $name = ''): self
Parameters:
$email(string) - Хүлээн авагчийн имэйл хаяг$name(string) - Хүлээн авагчийн нэр (сонголттой)
Returns:
self- Fluent interface-ийн зориулалтаар объектыг буцаана
Example:
use codesaur\Http\Client\Mail;
$mail = new Mail();
$mail->targetTo('user@example.com', 'Хэрэглэгч');
addRecipient()
To хүлээн авагч нэмэх.
Signature:
public function addRecipient(string $email, string $name = ''): self
Parameters:
$email(string) - Хүлээн авагчийн имэйл хаяг$name(string) - Хүлээн авагчийн нэр (сонголттой)
Returns:
self- Fluent interface-ийн зориулалтаар объектыг буцаана
Example:
$mail->addRecipient('user1@example.com', 'Хүн 1');
$mail->addRecipient('user2@example.com', 'Хүн 2');
addCCRecipient()
Cc хүлээн авагч нэмэх.
Signature:
public function addCCRecipient(string $email, string $name = ''): self
Parameters:
$email(string) - Cc хүлээн авагчийн имэйл хаяг$name(string) - Cc хүлээн авагчийн нэр (сонголттой)
Returns:
self- Fluent interface-ийн зориулалтаар объектыг буцаана
Example:
$mail->addCCRecipient('cc@example.com', 'CC Хүлээн авагч');
addBCCRecipient()
Bcc хүлээн авагч нэмэх.
Signature:
public function addBCCRecipient(string $email, string $name = ''): self
Parameters:
$email(string) - Bcc хүлээн авагчийн имэйл хаяг$name(string) - Bcc хүлээн авагчийн нэр (сонголттой)
Returns:
self- Fluent interface-ийн зориулалтаар объектыг буцаана
Example:
$mail->addBCCRecipient('bcc@example.com', 'BCC Хүлээн авагч');
addRecipients()
Олон хүлээн авагчийг массив хэлбэрээр нэмэх.
Signature:
public function addRecipients(array $recipients): self
Parameters:
$recipients(array) - Хүлээн авагчдын массив:['To'=>[], 'Cc'=>[], 'Bcc'=>[]]- Жишээ:
['To' => [['email' => 'user@example.com', 'name' => 'Нэр']]]
- Жишээ:
Returns:
self- Fluent interface-ийн зориулалтаар объектыг буцаана
Example:
$mail->addRecipients([
'To' => [
['email' => 'user1@example.com', 'name' => 'Нэр 1'],
['email' => 'user2@example.com', 'name' => 'Нэр 2']
],
'Cc' => [
['email' => 'cc@example.com', 'name' => 'CC']
],
'Bcc' => [
['email' => 'bcc@example.com']
]
]);
getRecipients()
Тодорхой төрлийн хүлээн авагчдын жагсаалтыг буцаах.
Signature:
public function getRecipients(string $type): array
Parameters:
$type(string) - Хүлээн авагчийн төрөл ('To', 'Cc', 'Bcc')
Returns:
array- Хүлээн авагчдын жагсаалт, эсвэл хоосон массив
Example:
$toRecipients = $mail->getRecipients('To');
// [
// ['email' => 'user1@example.com', 'name' => 'Нэр 1'],
// ['email' => 'user2@example.com']
// ]
setSubject()
Имэйлийн гарчиг тохируулах.
Signature:
public function setSubject(string $subject): self
Parameters:
$subject(string) - Имэйлийн гарчиг
Returns:
self- Fluent interface-ийн зориулалтаар объектыг буцаана
Example:
$mail->setSubject('Сайн байна уу?');
setMessage()
Имэйлийн гол агуулга тохируулах.
Signature:
public function setMessage(string $message): self
Parameters:
$message(string) - Имэйлийн агуулга (HTML эсвэл энгийн текст)
Returns:
self- Fluent interface-ийн зориулалтаар объектыг буцаана
Example:
$mail->setMessage('<h1>Hello!</h1><p>Тест имэйл.</p>');
setFrom()
Илгээгчийн мэдээлэл тохируулах.
Signature:
public function setFrom(string $email, string $name = ''): self
Parameters:
$email(string) - Илгээгчийн имэйл хаяг$name(string) - Илгээгчийн нэр (сонголттой)
Returns:
self- Fluent interface-ийн зориулалтаар объектыг буцаана
Throws:
\InvalidArgumentException- Имэйл хаяг буруу байвал
Example:
$mail->setFrom('no-reply@example.com', 'codesaur');
setReplyTo()
Reply-To тохируулах.
Signature:
public function setReplyTo(string $email, string $name = ''): self
Parameters:
$email(string) - Хариу илгээх имэйл хаяг$name(string) - Хариу илгээх нэр (сонголттой)
Returns:
self- Fluent interface-ийн зориулалтаар объектыг буцаана
Throws:
\InvalidArgumentException- Имэйл хаяг буруу байвал
Example:
$mail->setReplyTo('support@example.com', 'Support Team');
addAttachment()
Хавсралт нэмж өгөгдсөн төрөлд үндэслэн чиглүүлэх.
Signature:
public function addAttachment(array $attachment): self
Parameters:
$attachment(array) - Хавсралтын массив:['path' => '/path/to/file']- файлын замаар['url' => 'https://example.com/file']- URL-аар['content' => '...', 'name' => 'file.txt']- агуулгаар
Returns:
self- Fluent interface-ийн зориулалтаар объектыг буцаана
Throws:
\InvalidArgumentException- Хавсралтын мэдээлэл буруу байвал
Example:
$mail->addAttachment(['path' => '/path/to/file.pdf']);
$mail->addAttachment(['url' => 'https://example.com/logo.png']);
$mail->addAttachment(['content' => 'Hello world', 'name' => 'note.txt']);
addFileAttachment()
Файлын замаар хавсралт нэмэх.
Signature:
public function addFileAttachment(string $filePath): self
Parameters:
$filePath(string) - Хавсралт болгох файлын зам
Returns:
self- Fluent interface-ийн зориулалтаар объектыг буцаана
Throws:
\InvalidArgumentException- Файл олдсонгүй эсвэл буруу байвал
Example:
$mail->addFileAttachment(__DIR__ . '/file.pdf');
addUrlAttachment()
URL дээрх файлыг хавсралтад нэмэх.
Signature:
public function addUrlAttachment(string $fileUrl): self
Parameters:
$fileUrl(string) - Хавсралт болгох файлын URL
Returns:
self- Fluent interface-ийн зориулалтаар объектыг буцаана
Throws:
\InvalidArgumentException- URL хүчинтэй биш эсвэл файл олдсонгүй бол
Example:
$mail->addUrlAttachment('https://example.com/logo.png');
addContentAttachment()
Raw binary өгөгдлөөр хавсралт нэмэх.
Signature:
public function addContentAttachment(string $fileContent, string $fileName): self
Parameters:
$fileContent(string) - Хавсралтын агуулга (binary эсвэл текст)$fileName(string) - Хавсралтын файлын нэр
Returns:
self- Fluent interface-ийн зориулалтаар объектыг буцаана
Throws:
\InvalidArgumentException- Агуулга эсвэл файлын нэр хоосон байвал
Example:
$mail->addContentAttachment("Hello world", "note.txt");
clearAttachments()
Хавсралтуудыг хоослох.
Signature:
public function clearAttachments(): void
Example:
$mail->clearAttachments();
getAttachments()
Хавсралтын жагсаалт буцаах.
Signature:
public function getAttachments(): array
Returns:
array- Хавсралтын жагсаалт, эсвэл хоосон массив
Example:
$attachments = $mail->getAttachments();
sendMail()
Имэйл илгээх үндсэн функц.
Signature:
public function sendMail(): bool
Returns:
bool- Имэйл амжилттай илгээгдсэн эсэх
Throws:
\InvalidArgumentException- Хүлээн авагч, илгээгч, гарчиг эсвэл мессеж тохируулаагүй байвал\RuntimeException- Илгээх явцад алдаа гарвал
Description: MIME multipart имэйл үүсгэж, хавсралттай/хавсралтгүй илгээнэ.
Example:
$mail = new Mail();
$mail->targetTo('user@example.com', 'Хэрэглэгч');
$mail->setFrom('no-reply@example.com', 'codesaur');
$mail->setSubject('Сайн байна уу?');
$mail->setMessage('<h1>Hello!</h1><p>Тест имэйл.</p>');
$mail->addFileAttachment(__DIR__ . '/file.pdf');
$mail->sendMail();
Fluent Interface
Mail класс нь fluent interface дэмжиж байна, учир нь олон method-ууд $this буцаана:
$mail = new Mail();
$mail
->targetTo('user@example.com', 'Хэрэглэгч')
->setFrom('no-reply@example.com', 'codesaur')
->setSubject('Сайн байна уу?')
->setMessage('<h1>Hello!</h1><p>Тест имэйл.</p>')
->addFileAttachment(__DIR__ . '/file.pdf')
->addRecipient('cc@example.com', 'CC')
->sendMail();
Exceptions
CurlClient
\Exception- cURL гүйцэтгэх явцад алдаа гарвал
JSONClient
Алдаа гарсан тохиолдолд Exception шидэхийн оронд алдааны бүтэц буцаана:
['error' => ['code' => ..., 'message' => ...]]
\InvalidArgumentException- Имэйл хаяг буруу, файл олдсонгүй, шаардлагатай утга тохируулаагүй байвал\RuntimeException- Имэйл илгээх явцад алдаа гарвал
Notes
- SSL Verification: JSONClient нь
CODESAUR_APP_ENVenvironment variable-аас хамааруулан SSL verify-ийг тохируулна:development-> SSL verify унтраалттайproductionэсвэл бусад -> SSL verify идэвхтэй (default)
- UTF-8 Support: Mail класс нь UTF-8 бүрэн дэмжлэгтэй (нэрс, файлын нэр, гарчиг г.м.)
- MIME Multipart: Mail класс нь хавсралттай үед автоматаар MIME multipart имэйл үүсгэнэ
- Error Handling: JSONClient нь бүх алдааг нэг мөрөөр 'error' бүтэц болгон буцаана, Exception шидэхгүй
- Response обьект: CurlClient-ийн
send()метод ньResponseобьект буцаана -statusCode,headers,bodyшинж чанар,json(),isOk(),isError(),getHeader()методууд - Дахин оролдох:
sendWithRetry()нь exponential backoff ашиглана (500ms, 1000ms, 2000ms...), зөвхөн 5xx серверийн алдааг дахин оролдоно - Файл upload:
upload()нь CURLFile ашиглан multipart/form-data хэлбэрээр файл илгээнэ - Debug горим:
enableDebug(true)ашиглан бүх хүсэлт/хариуны мэдээллийг лог хийнэ
License
MIT License
API Documentation Generated by: Cursor AI Last Updated: 2026