Dev Perfects
40 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from | AmirHossein |
استریم‌ ها در PHP - قسمت اول

در PHP، استریم (Stream) یک سازوکار انتزاعی برای مدیریت ورودی و خروجی داده‌ها است. به زبان ساده، استریم‌ها به شما امکان می‌دهند انواع مختلف منابع داده (مانند فایل‌های سیستم، درخواست‌های شبکه، داده‌های فشرده و ...) را از طریق یک رابط یکسان بخوانید یا بنویسید.

به جای آنکه برای هر نوع منبع تابع‌ها یا روش‌های جداگانه‌ای داشته باشید، PHP با استفاده از استریم‌ها یک مجموعه توابع عمومی (مثل fopen, fread, fwrite و ...) فراهم کرده که با همه این منابع به شکل یکنواخت رفتار می‌کنند.

هر استریم رَپر (Stream Wrapper) در PHP در واقع یک پروتکل یا طرح (scheme) خاص را پیاده‌سازی می‌کند که به صورت scheme:// استفاده می‌شود. برای مثال، file:// برای دسترسی به سیستم فایل محلی، https:// برای منابع وب، یا php:// برای منابع داخلی PHP استفاده می‌شود.

PHP به طور پیش‌فرض تعداد زیادی استریم رپر داخلی دارد که بسیاری از کارهای معمول را پوشش می‌دهند. شما می‌توانید توسط این استریم‌ها به سادگی کارهایی مثل خواندن فایل‌ها، دریافت داده از وب, نوشتن خروجی، خواندن ورودی خام درخواست‌ها و حتی کار با داده‌های فشرده‌شده را انجام دهید، بدون اینکه نگران جزئیات سطح پایین هر کدام باشید.

استریم‌های داخلی PHP - ‏php://

1- php://input

این استریم برای دسترسی به دادهٔ ورودی خام HTTP در PHP استفاده می‌شود. به طور خاص، این استریم محتوای خام بدنهٔ درخواست HTTP را (معمولاً در درخواست‌های POST یا PUT) ارائه می‌کند، بدون هیچ‌گونه پردازش یا parse خودکار.

زمانی که نیاز دارید ورودی خام درخواست را بخوانید (مثلاً دریافت داده‌های JSON از یک API کلاینت یا پردازش درخواست‌های RESTful)، این استریم بسیار مفید است. برخلاف متغیرهای سراسری مانند $_POST که فقط داده‌های form-urlencoded را می‌گیرند،
این استریم اجازه می‌دهد انواع داده‌ها (JSON, XML, متن خام و ...) را مستقیماً از بدنهٔ درخواست دریافت کنید.

$json = file_get_contents("php://input");
$data = json_decode($json, true);
echo "Hello " . $data["user"];

در این مثال، محتوای خام ورودی HTTP با file_get_contents از php://input خوانده شده و سپس از JSON به آرایه PHP تبدیل می‌گردد.
در نهایت نام کاربر خروجی گرفته می‌شود. اگر درخواست فوق رشتهٔ JSON
{"user": "Ali"}

را ارسال کرده باشد، خروجی برنامه Hello Ali خواهد بود.

توجه داشته باشید php://input فقط خواندنی است و فقط یک بار می‌توان محتوا را از آن خواند، یعنی پس از خواندن، محتوای آن خالی می‌شود. همچنین در مورد درخواست‌های معمولی فرم (مانند multipart/form-data برای آپلود فایل)، استفاده از این استریم توصیه نمی‌شود، زیرا PHP آن داده‌ها را قبلاً پردازش کرده است.

2- php://output

این استریم خروجی استاندارد اسکریپت PHP را نمایندگی می‌کند. هر داده‌ای که در آن نوشته شود، مستقیماً به خروجی معمول برنامه (همان چیزی که مرورگر دریافت می‌کند یا در CLI ترمینال نشان داده می‌شود) فرستاده می‌شود.
زمانی که بخواهید با توابع استریم داده‌ای را به خروجی بفرستید (به جای استفاده از echo یا print)، می‌توانید php://output را مانند یک فایل باز کرده و در آن بنویسید.

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

$fp = fopen("php://output", "w");
fwrite($fp, "Hello World!");
fclose($fp);

در این قطعه کد، ما استریم خروجی را باز کرده‌ایم و یک خط متن را با fwrite در آن نوشتیم. نتیجهٔ اجرای این کد نمایش متن ذکر شده در خروجی (مثلاً مرورگر یا کنسول) است. در واقع کاری که fwrite در اینجا انجام می‌دهد معادل همان echo کردن رشته‌ها است.

در قسمت های بعدی با سایر استریم‌ها در PHP آشنا خواهیم شد.

#PHP #PHP_streams
@AmirhDeveloper
.
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱)
🔶 استفاده از PHP نسخه 7.4 علاوه بر افزایش ریسک امنیتی برای وبسایت شما، می تواند در پرفرمنس و سئو سایت شما نیز تاثیر منفی داشته باشد.

بر اساس تست های انجام شده ارتقاع PHP به سری 8 می تواند سرعت و پرفرمنس سایت شمارا ۲۰٪ الی ۴۰٪ افزایش دهد، عدد چشمگیری که بعضی بیزینس ها برای دستیابی به آن هزینه های بسیار زیادی انجام می‌دهند.

</Hamidreza Zolfaghar>

#PHP
@TheRaymondDev
Forwarded from Golden Code (علی 🇨🇴)
"چطوری تو لاراول از پس پردازشهای سنگین بر بیایم؟

وقتی حجم ترنزاکشنها بالا میره (مثلاً ۱ میلیون رکورد!)، خیلیها تصور میکنن Laravel جواب نمیده! ولی واقعیت اینه که اگر از ابزارها و تکنیکهای درست استفاده کنی، Laravel خیلی هم قدرتمنده

استفاده از Queue Jobs
ارسال عملیاتهای سنگین به صف برای پردازش در پسزمینه

بهینهسازی دیتابیس: تعریف Index مناسب

استفاده از Query Builder به جای Eloquent برای کوئریهای سنگین یا حتی اگه می تونین کوئری خام بنویسین معجزه رو می بینید

استفاده از Transaction
برای تضمین atomic بودن عملیاتهای حساس جاهایی که چند کار مرتبط با هم رو می خواین انجام بدین عالیه

استفاده از chunk
بارگذاری و پردازش دادههای بزرگ بهصورت تکهای

۵. استفاده از Redis یا Kafka

برای صفهای سریع و سبک Redis
برای پروژه های بزرگ و real-time کافکا باور کنید معجزه می کنه

بهینه سازی کد PHP و مصرف حافظه

استفاده از cursor() بهجای بارگذاری کل دیتا

جلوگیری از لوپهای سنگین و غیرضروری

نتیجه؟
اگه این موارد رو به درستی پیاده کنید، Laravel بهراحتی از پس میلیونها ترنزاکشن برمیاد بدون اینکه اپلیکیشنت کرش کنه! "

#Laravel

@GoldenCodeir
(به منبع توجه کنید👇🏾)

https://www.linkedin.com/posts/fererydoon-salemi_laravel-php-backenddevelopment-activity-7327385475915128832-DtQB?utm_source=share&utm_medium=member_android&rcm=ACoAACtoqKYB5Pk8cjIxolPHpdjShKtRL0tcolQ
Forwarded from laravel-news
باورتون نمیشه اگه بگم PHP Foundation تصمیم گرفته توسعه FrankenPHP رو به دست بگیره!!! 🤯🔥

فرانکین FrankenPHP توسط Kévin Dunglas ساخته شده و با حمایت Les-Tilleuls.coop توسعه پیدا کرده. این سرور با ادغام PHP مستقیماً در Go و وب‌سرور Caddy، کار دیپلویمنت رو خیلی ساده‌تر و سریع‌تر کرده و حتی هزینه‌ها رو کاهش می‌ده. همینطور از قابلیت‌هایی مثل اجرای real-time، حالت worker برای افزایش کارایی و هاستینگ پیشرفته پشتیبانی می‌کنه که الان توی فریم‌ورک‌هایی مثل Laravel، Symfony و Yii هم ادغام شده.

حالا بنیاد PHP رسماً اعلام کرده که از این پروژه پشتیبانی می‌کنه، کدش رو تو گیت‌هاب رسمی می‌ذاره و در توسعه فعّال اون نقش داره. این یک قدم بزرگ برای مدرن‌سازی اکوسیستم PHP هست، در حالی که مدیریت پروژه همچنان با توسعه‌دهنده اصلی پروژه می‌مونه.

اطلاعات بیشتر:
https://thephp.foundation/blog/2025/05/15/frankenphp/

#FrankenPHP #PHP_Foundation
Forwarded from Anophel | آنوفل
در PHP 8.1 و بالاتر، می‌توان از Enum ها برای تعریف مجموعه‌ای از ثابت‌ها که با هم مرتبط هستند استفاده کرد. Enum (مخفف Enumeration)  یک نوع داده خاص است که شامل مجموعه‌ای از مقادیر ثابت و از پیش تعریف‌شده است. این مقادیر معمولاً با هم مرتبط هستند و به یک مفهوم خاص اشاره می‌کنند. به عنوان مثال، می‌توان برای وضعیت‌های مختلف یک سفارش (مانند "در انتظار"، "در حال پردازش"، "ارسال شده" و غیره) یک Enum تعریف کرد.

کی از Enum استفاده کنیم؟

تعریف مجموعه‌ای از مقادیر ثابت و مرتبط: زمانی که مجموعه‌ای از مقادیر ثابت وجود دارد که با هم مرتبط هستند و نیاز به مدیریت آنها دارید، می‌توان از Enum استفاده کرد. مانند وضعیت‌های مختلف یک سفارش، روزهای هفته، ماه‌های سال و غیره.

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

جلوگیری از استفاده نادرست از مقادیر: وقتی که مقادیر ثابت را به صورت Enum تعریف می‌کنید، کامپایلر یا مفسر برنامه در برابر استفاده نادرست از این مقادیر به شما هشدار می‌دهد یا مانع از آن می‌شود.

کاهش استفاده از "عددهای جادویی": استفاده از Enum به جای اعداد یا رشته‌های ثابت پراکنده در کد، باعث می‌شود که کد تمیزتر و قابل فهم‌تر باشد.

در اینجا یک مثال از یک Enum برای وضعیت‌های یک سفارش در یک سیستم خرید آورده شده است.

ویژگی‌های Enum در PHP:
1. تعریف به صورت Enum : Enum ها با استفاده از کلمه کلیدی enum تعریف می‌شوند.
2. مقادیر ثابت: Enum ها مجموعه‌ای از مقادیر ثابت را تعریف می‌کنند که با هم مرتبط هستند.
3. پشتیبانی از انواع داده: Enum ها می‌توانند انواع داده‌ای مختلف مثل string یا int را به عنوان مقدار خود داشته باشند.
4. قابلیت استفاده در توابع: Enum ها می‌توانند به عنوان پارامتر به توابع و متدها ارسال شوند.
5. سازگاری با Match Expression: از match expression می‌توان برای پردازش مقادیر Enum استفاده کرد.
6. تعریف متدها: می‌توان متدهایی را در داخل Enum تعریف کرد که به مقادیر آن مرتبط هستند.

من در Anophel آنوفل بیشتر به این موضوع پرداختم لینک مقاله :

لینک مقاله

#لاراول #php
نسخه‌ی جدید PHP 8.5 تو راهه :)

چند قابلیت جدید و بهبود جالب توی این نسخه:

* توابع array_first() و array_last() برای دسترسی سریع‌تر به اولین و آخرین عنصر آرایه‌ها (البته array_last تفاوت خاصی با end() نداره)

* امکان استفاده از Closure و Callable در const

* ویژگی [#[\NoDiscard]] برای مشخص‌کردن اینکه مقدار return باید استفاده بشه

* بهبود نمایش خطاها با Error Backtraces v2

* توابع جدید get_error_handler() و get_exception_handler()

* بهبود performance در cURL و کلاس Directory



نسخه 8.5 شاید تغییرات انقلابی نداشته باشه، ولی تجربه‌ی برنامه‌نویسی رو بهتر و تمیزتر می‌کنه.

البته هنوز خبری از generic types درست‌وحسابی نیست و PHP کاملاً type-safe نشده



منبع:
https://wiki.php.net/rfc#php_85

@DevTwitter | <Milad Niroee/>
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱)
🔶 تولد ۳۰ سالگی PHP مبارک

🎊🥂🍾🎉

#php
@TheRaymondDev
🧠 جی آی تی JIT یعنی چی؟

در اصل JIT مخفف Just-In-Time compilation هست، یعنی کامپایل هم‌زمان با اجرا. این تکنیک باعث می‌شه که کدهایی که به صورت معمول تفسیر (interpret) می‌شن (مثل PHP یا JavaScript)، در زمان اجرا به کد ماشین تبدیل بشن، و این یعنی اجراشون خیلی سریع‌تر بشه.


مزایای JIT

- سرعت اجرای بهتر
- کاهش مصرف منابع در برخی سناریوها
- عملکرد نزدیک‌تر به زبان‌های کامپایل‌شده (مثل C)


🧪 کار JIT در PHP چیه؟

در PHP 8 به بعد، Zend Engine دارای یک JIT Compiler شد. قبل از اون، PHP فقط تفسیر می‌کرد.

کار JIT باعث می‌شه:
بخش‌هایی از کد که زیاد استفاده می‌شن (مثلاً حلقه‌ها یا توابع پرتکرار)، به کد ماشین واقعی تبدیل بشن.

⚙️ این باعث افزایش سرعت اجرای برنامه‌ها می‌شه، مخصوصاً در کارهای محاسباتی سنگین مثل:

- پردازش تصویر
- بازی‌سازی
- پروژه‌های علمی
- کدهایی که زیاد اجرا می‌شن مثل فریم‌ورک‌ها یا CMSها

#PHP #JIT #Milwad #Tutorial

📱 @MilwadKhosravi
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Golden Code (علی 🇨🇴)
متود segment() در لاراول به شما این امکان رو میده که بخش‌های مختلف مسیر URL رو به راحتی استخراج و بررسی کنید. این متود برای ساخت منطق‌های داینامیک بر اساس URL بسیار کاربردیه.

📌 کاربردهای اصلی:

خواندن بخش‌های جداگانه مسیر URL

شرط گذاری و تصمیم گیری بر اساس مسیر فعلیمون

فیلتر کردن دیتاها یا تنظیم نمایش محتوا براساس URL

نحوه استفاده
$segment1 = $request->segment(1);  // بخش اول مسیر
$segment2 = $request->segment(2); // بخش دوم مسیر

شماره بخش‌ها از 1 شروع میشه.

مثال:
اگه URL برابر باشه با:
https://example.com/products/electronics/phones

$request->segment(1) مقدار "products"

$request->segment(2) مقدار "electronics"

$request->segment(3) مقدار "phones"

نکته :
اگه بخش مورد نظر در URL وجود نداشته باشه، مقدار null برمی‌گردد.
@GoldenCodeir

#Laravel
(به منبع و مثالش دقت 👇🏾)
https://x.com/MilwadDev/status/1943673513291690462?s=35
1
Forwarded from Golden Code (علی 🇨🇴)
متود segment() در لاراول به شما این امکان رو میده که بخش‌های مختلف مسیر URL رو به راحتی استخراج و بررسی کنید. این متود برای ساخت منطق‌های داینامیک بر اساس URL بسیار کاربردیه.

📌 کاربردهای اصلی:

خواندن بخش‌های جداگانه مسیر URL

شرط گذاری و تصمیم گیری بر اساس مسیر فعلیمون

فیلتر کردن دیتاها یا تنظیم نمایش محتوا براساس URL

نحوه استفاده
$segment1 = $request->segment(1);  // بخش اول مسیر
$segment2 = $request->segment(2); // بخش دوم مسیر

شماره بخش‌ها از 1 شروع میشه.

مثال:
اگه URL برابر باشه با:
https://example.com/products/electronics/phones

$request->segment(1) مقدار "products"

$request->segment(2) مقدار "electronics"

$request->segment(3) مقدار "phones"

نکته :
اگه بخش مورد نظر در URL وجود نداشته باشه، مقدار null برمی‌گردد.
@GoldenCodeir

#Laravel
(به منبع و مثالش دقت 👇🏾)
https://x.com/MilwadDev/status/1943673513291690462?s=35