TGViewer
| کانال توسعه‌دهندگان PHP | | کانال توسعه‌دهندگان PHP | @developixphp · 1.68K subscribers
Post #67 665
استریم‌ ها در PHP - قسمت ششم

- استریم‌های فشرده‌سازی و آرشیو

3- zip://

این استریم رپر اجازه می‌دهد محتویات یک فایل ZIP را مانند یک سیستم فایل مجزا مشاهده و دستکاری کنید. با آن می‌توانید فایل‌های درون یک آرشیو ZIP را بخوانید بدون آنکه نیاز باشد کل آرشیو را دستی از حالت فشرده خارج کنید. برای اشاره به یک فایل داخل ZIP، از علامت # در مسیر استفاده می‌شود.

فرض کنید یک آرشیو zip حاوی چند فایل CSV دارید و می‌خواهید یکی از آنها را مستقیماً پردازش کنید؛ با zip:// می‌توانید مستقیماً آن فایل CSV را باز کنید. یا برای لیست کردن محتویات آرشیو می‌توانید مانند یک دایرکتوری عمل کنید.

توجه داشته باشید که این قابلیت نیازمند فعال بودن اکستنشن Zip در PHP است.

$content = file_get_contents("zip://". __DIR__ . "/archive.zip#readme.txt");
echo $content;

در اینجا با استفاده از file_get_contents به مسیر zip://.../archive.zip#readme.txt دسترسی پیدا کرده‌ایم. بخش قبل از # مسیر آرشیو ZIP روی دیسک را مشخص می‌کند و بعد از # نام فایلی داخل آن آرشیو را.

آرشیو را باز کرده، به فایل readme.txt درون آن دسترسی پیدا می‌کند و محتوایش را برمی‌گرداند. به همین ترتیب می‌توان هر فایلی را داخل ZIP با fopen یا حتی include (برای فایل‌های PHP داخل phar/zip) باز کرد.

این رپر فقط خواندن را پشتیبانی می‌کند؛ برای نوشتن به ZIP باید از کلاس‌های شیءگرای ZipArchive استفاده کنید.

———
4- phar://

‏Phar مخفف "PHP Archive" است و یک قالب آرشیو مخصوص PHP (معمولاً با پسوند .phar) می‌باشد که می‌تواند شامل فایل‌های PHP، کتابخانه‌ها و سایر منابع باشد. استریم phar:// اجازه می‌دهد فایل‌های داخل یک آرشیو Phar را همانند Zip به صورت شفاف بخوانید و حتی اجرا (include/require) کنید.
این قابلیت به توزیع و استفاده از برنامه‌ها یا کتابخانه‌های PHP در قالب یک فایل واحد کمک می‌کند.

برای مثال، Composer خودش به صورت یک فایل phar توزیع می‌شود که شما می‌توانید آن را با PHP اجرا کنید. با phar:// می‌توانید به محتویات آن دسترسی داشته باشید.

همچنین از این طریق می‌توان کد PHP را مستقیماً از Phar include کرد. نوشتن در Phar نیز ممکن است (Pharها می‌توانند در حالت قابل نوشتن باز شوند) اما معمولاً Pharها به صورت فقط خواندنی در برنامه‌ها استفاده می‌شوند.

require "phar://package.phar/lib/functions.php";

در این مثال، فایل lib/functions.php واقع در داخل آرشیو package.phar مستقیماً بارگذاری (require) شده است. یعنی حتی بدون اینکه آن را از آرشیو روی دیسک استخراج کنیم، PHP قادر است محتویاتش را تفسیر و اجرا کند.

از دید برنامه‌نویسی، این کار تفاوتی با require کردن یک فایل عادی ندارد، جز اینکه داریم از یک بستهٔ Phar می‌خوانیم. اگر بخواهیم محتوای غیر PHP (مثلاً یک فایل متنی) را از Phar بخوانیم، می‌توانیم از file_get_contents("phar://...") یا روش‌های مشابه استفاده کنیم.

———
5- rar://

این استریم رپر عملکردی مشابه zip:// دارد اما برای فرمت آرشیو RAR استفاده می‌شود. فایل‌های RAR به صورت پیش‌فرض توسط PHP پشتیبانی نمی‌شوند مگر اینکه اکستنشن RAR فعال شده باشد.

$fp = fopen("rar://files.rar#doc.txt", "r");
$content = stream_get_contents($fp);
fclose($fp);

این کد فرضی نشان می‌دهد که چگونه می‌توان از rar:// استفاده کرد. مانند Zip، پس از علامت # نام فایل درون آرشیو را مشخص می‌کنیم. با fopen و خواندن محتوا، PHP آرشیو را باز کرده و داده‌های فایل doc.txt را به ما می‌دهد.

از آنجا که پشتیبانی RAR به صورت پیش‌فرض موجود نیست، هنگام استفاده در محیط عملی باید اطمینان حاصل کنید که افزونه PECL RAR نصب و فعال شده باشد.

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

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

👤 AmirHossein

💎 Channel: @DevelopixPHP
  • 🔥 6
  • 👍 3
  • ❤ 2
  • 👎 1
More from @developixphp
  1. Sep 26, 2026این کد موقع اجرا چه خروجی‌ای می‌ده و مشکلش کجاست؟ 🔖 #PHP #پی_اچ_پی 👤 Developix 💎 Channe…
  2. Sep 25, 2026🔥 پکیج: قراردادهای ترجمه سیمفونی اگر کد PHP را برای چندزبانگی می‌نویسید، بهتر است منطق بر…
  3. Sep 16, 2026🚀 ‏LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
  4. Sep 11, 2026ارسال ایمیل تأیید ثبت‌نام، بازیابی رمز عبور یا نوتیفیکیشن سفارش، تقریباً توی هر پروژه‌ PHP…
  5. Sep 10, 2026برنامه نویسی سوکت در PHP بخش اول عبارت دیگر در ارتباط های غیر سوکت برای ارسال یک پالس از س…
  6. Aug 31, 2026🔥 پکیج: استاندارد PSR-11 برای Container استاندارد PSR-11 فقط یه interface مشترک برای Cont…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →