استریمهای سیستم فایل (File Streams)
1- file://
این استریم امکان دسترسی به سیستم فایل محلی سرور را فراهم میکند. file:// در PHP پیشفرضترین استریم است؛ یعنی حتی اگر هیچ پروتکلی قبل از مسیر فایل ننویسید و مستقیم مسیری را بدهید، در واقع از همین پروتکل فایل استفاده میشود.
با file:// میتوانید فایلهای روی دیسک محلی را بخوانید، بنویسید، ایجاد کنید یا تغییر نام دهید – درست مانند کاری که با توابع معمول فایل انجام میدهید.
خواندن و نوشتن فایلهای معمولی. مثلاً خواندن محتوای یک فایل متنی جهت نمایش در صفحه، نوشتن لاگ در یک فایل .log، ایجاد یک فایل پیکربندی و ... . از آنجا که این پروتکل به منابع محلی دسترسی دارد، امنیت آن وابسته به دسترسیهای فایلسیستم است (PHP فقط میتواند فایلهایی را بخواند/بنویسد که مجوزش را دارد).
$data = file_get_contents("file://example.txt");
echo $data;در این مثال، تابع file_get_contents را با مسیر file://... صدا زدهایم تا محتوای فایل example.txtخوانده شود.
استفاده از file:// در اینجا اختیاری است؛ زیرا اگر به جای آن مستقیماً مسیر فایل را مینوشتیم (مثلاً "example.txt")، PHP به صورت خودکار از استریم فایل استفاده میکرد.
توجه داشته باشید برای اشاره به مسیرهای مطلق در سیستمعامل ویندوز، سه اسلش بعد از file: لازم است .
مثال:
file:///C:/path/to/file.txt
———
2- glob://
این استریم رپر امکان استفاده از الگوهای glob را به شکل یک منبع داده فراهم میکند. به طور معمول، تابع glob() در PHP رشتههای مسیر را بر اساس الگو (pattern) تطبیق داده و لیستی از نام فایلها را برمیگرداند. glob:// این قابلیت را در قالب یک استریم پیادهسازی میکند که میتوان آن را مانند یک دایرکتوری مجازی پیمایش کرد.
زمانی که بخواهید با استفاده از یک الگوی خاص، مجموعهای از فایلها یا مسیرها را پردازش کنید. مثلاً پیدا کردن همه فایلهای .log در یک پوشه و خواندن تکتک آنها. با این استریم میتوانید این کار را بدون صدا زدن تابع جداگانه glob و سپس حلقه روی نتایج، انجام دهید – مستقیماً به عنوان یک پوشه با محتوای فیلترشده باز میکنید.
if ($dir = opendir("glob://*.txt")) {
while (($file = readdir($dir)) !== false) {
echo "Found: $file\n";
}
closedir($dir);
}در این قطعه کد، از opendir با مسیر glob://*.txt استفاده کردهایم. نتیجهٔ این opendir مثل این است که یک دایرکتوری باز کرده باشیم که فقط شامل فایلهایی است که با الگوی *.txt تطابق دارند. سپس با readdir در یک حلقه، تکتک نام این فایلها را میخوانیم و چاپ میکنیم. در نهایت closedir را فراخوانی میکنیم.
استفاده از glob:// میتواند کدنویسی را در شرایطی که میخواهید روی مجموعهای از فایلهای منطبق با الگو کار کنید سادهتر کند.
در قسمت های بعدی با سایر استریمها در PHP آشنا خواهیم شد.
#PHP #PHP_streams
@AmirhDeveloper
.