| کانال توسعه‌دهندگان PHP |
1.68K subscribers
19 photos
38 links
⭕️ کانال توسعه‌دهندگان پی‌اچ‌پی (PHP) دولوپیکس

💠 دولوپیکس | جامعه توسعه‌دهندگان ایرانی

💎 @Developix
🚀 Developix.ir

📌 پشتیبانی و تبلیغات:
@DevelopixSupport
Download Telegram
Guzzle — کلاینت HTTP برای PHP

Guzzle یک کتابخانهٔ معتبر و فعال برای ارسال درخواست‌های HTTP در PHP است. به‌سادگی با APIهای REST، سرویس‌های خارجی و میکروسرویس‌ها کار می‌کند و مدیریت زمان‌انتظار، خطاها و درخواست‌های همزمان را آسان می‌کند. 🚀

ویژگی‌ها و مزایا:
- پشتیبانی sync و async (Promise)
- Middleware و مدیریت هدر/کوکی
- Pool برای درخواست‌های همزمان و بهینه‌سازی کارایی
- قابلیت تنظیم timeout، retries و stream برای دانلود فایل

نمونه نصب و استفاده:
<?php
// نصب: composer require guzzlehttp/guzzle
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client(['base_uri' => 'https://api.github.com/']);
$res = $client->request('GET', 'users/guzzle');
echo $res->getStatusCode();
echo $res->getBody();


موارد کاربرد: فراخوانی APIهای خارجی، ارتباط بین سرویس‌ها، تست و نمونه‌سازی سریع کلاینت HTTP. نکته: از timeout و retries مناسب استفاده کنید تا برنامه پایدار بماند. 🔧

مستندات رسمی: docs.guzzlephp.org
کد منبع: github.com/guzzle/guzzle

تجربه‌تان را با Guzzle امتحان کنید و بازخورد خود را به اشتراک بگذارید.

🔖 #PHP #پی_اچ_پی #Guzzle #HTTP #API #PHP

👤 Developix

💎 Channel: @DevelopixPHP
1
👨‍💻 سوال PHP برای توسعه‌دهندگان

خروجی اجرای کد زیر در PHP 8 چه خواهد بود؟

به تفاوت بین reference و مقدار کپی‌شده، و همین‌طور رفتار تابع با آرگومان‌ها دقت کنید.

🔖 #PHP #پی_اچ_پی

👤 Developix

💎 Channel: @DevelopixPHP
🔥4
عملگر پایپ (Pipe Operator) در PHP

عملگر پایپ ( |> ) از PHP 8.5 با هدف ساده‌سازی جریان داده و افزایش خوانایی کد اضافه شده است. این عملگر امکان می‌دهد خروجی یک عبارت به‌عنوان ورودی تابع بعدی استفاده شود؛ بدون آنکه نیاز به تو در تو کردن فراخوانی‌ها یا استفاده از متغیرهای موقتی باشد.

ساختار کلی عملگر پایپ:
$value |> callable;


در این ساختار:

- مقدار سمت چپ (value) محاسبه شده و سپس به تابع سمت راست (callable) ارسال می‌شود، و نتیجهٔ آن تابع، خروجی نهایی عبارت خواهد بود.

- تابع سمت راست باید فقط یک پارامتر لازم داشته باشد؛ زیرا همان یک پارامتر از پایپ دریافت می‌شود.

- نماد ( ... ) پس از نام تابع، بیانگر این است که پارامتر آن تابع از طریق عملگر پایپ وارد می‌شود.

چند مثال:

پیش از اضافه شدن پایپ تواع پشت سر هم نوشته می‌شد:
$result = strtolower(trim($title));

یا از متغیرهای موقتی استفاده می‌شد:
$trim = trim($title);
$result = strtolower($trim);

اما با استفاده از پایپ می توان ساختار تمیزتر و قابل فهم‌تری را داشته باشیم:
$result = $title
|> trim(...)
|> strtolower(...);

ترتیب اجرای عملیات کاملا روشن و خوانا است:
ابتدا trim، سپس strtolower.

ترکیب توابع استاندارد با Closure
$slug = $title
|> trim(...)
|> (fn($s) => str_replace(' ', '-', $s))
|> strtolower(...);

از آنجایی که گفته شد توابع تنها یک متد داشته باشند، برای توابع با چند متد می‌توان از کلوژرها استفاده کرد.
در این مثال str_replace نیاز به پارامترهای بیشتری است به همین دلیل از arrow-function استفاده شده.

عملیات روی آرایه
$clean = $items
|> (fn(array $arr) => array_map(fn($x) => trim($x), $arr))
|> (fn(array $arr) => array_filter($arr, fn($x) => $x !== ''))
|> array_values(...);

چنین زنجیره‌ای بدون استفاده از پایپ، به‌طور معمول شامل متغیرهای واسطه یا تو در تویی توابع خواهد بود؛ اما با استفاده از پایپ، تمامی مراحل به صورت خوانا پشت سر هم نوشته شده‌اند.

مزایای استفاده از عملگر پایپ:
- جریان داده از بالا به پایین قابل مشاهده است و عملیات به شکلی خطی بیان می‌شوند.

- به‌جای اینکه توابع داخل یکدیگر قرار بگیرند، هر تابع به‌طور مستقل در یک مرحله اجرا می‌شود.

- نیازی به ایجاد متغیر برای ذخیرهٔ نتیجهٔ هر مرحله نیست.

محدودیت‌ها و نکات مهم:
- توابعی که بیش از یک پارامتر ضروری دارند، مستقیماً با پایپ قابل استفاده نیستند.
"hello world" |> explode(' ', ...); // ERROR

"hello world" |> (fn($v) => explode(' ', $v)); // correct

- توابعی که پارامترشان با ارجاع (By Reference) دریافت می‌شود قابل استفاده نیستند (مانند array_pop یا sort)

- اگر تابعی مقدار بازگشتی نداشته باشد (void)، نتیجهٔ عملیات null خواهد بود و استفادهٔ آن در میانهٔ زنجیره صحیح نیست.


به طور کلی عملگر پایپ در PHP 8.5 امکان نگارش کدی خواناتر، مرحله‌ای و ساخت‌یافته را فراهم می‌کند.
این عملگر با ارسال خروجی هر مرحله به مرحلهٔ بعد، جریان داده را ساده‌سازی می‌کند و برای پردازش رشته‌ها، آرایه‌ها و داده‌های میان‌مرحله‌ای بسیار مناسب است.
در مقابل، محدودیت‌هایی نظیر نیاز به تک‌پارامتری بودن تابع یا عدم پشتیبانی از توابع دارای ارجاع وجود دارد که باید در استفادهٔ روزمره مورد توجه قرار گیرد.

🔖 #PHP #پی_اچ_پی

👤 AmirHossein

💎 Channel: @DevelopixPHP
👍52🔥1
👨‍💻 سوال برای توسعه‌دهندگان PHP:

خروجی اجرای این کد در PHP 8 چیست؟

به تفاوت بین مقایسه شل (loose) و مقایسه صریح (strict)، همین‌طور رفتار آرایه‌ها در مقایسه توجه کنید.


<?php

$values = [
"0", // string
0, // int
false, // bool
"", // empty string
[], // empty array
[0], // array with one element
];

$result = [];

foreach ($values as $i => $a) {
foreach ($values as $j => $b) {
if ($a == $b) {
$result[] = "$i==$j";
}
}
}

var_dump($result);


خروجی دقیق این کد (همان چیزی که var_dump چاپ می‌کند) چیست؟

🔖 #PHP #پی_اچ_پی

👤 Developix

💎 Channel: @DevelopixPHP