- استریمهای فشردهسازی و آرشیو
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 #PHP_streams
@AmirhDeveloper
.