توابع کار با پوشه ها در php

  • آپدیت شده در تاریخ

توابع کار با پوشه ها در php

زبان php شامل توابعی برای کار با پوشه ها در php مثل لیست محتویات دایرکتری ، ساخت / حذف و دیگر عملیات را در اختیار ما قرار می دهد .

توابع پایه کار با پوشه ها در php به صورت زیر لیست شده اند :

  • mkdir() – ساخت پوشه جدید
  • opendir() – باز کردن دایرکتری
  • readdir() – خواندن یک دایرکتری بعد از باز کردن آن
  • closedir() – بستن دایرکتری بعد از بازکردن
  • rmdir() – حذف دایرکتری

در مقاله آموزشی معرفی توابع کار با پوشه ها در php ، قصد داریم در مورد هریک از توابع بالا صحبت کنیم و مثال هایی را در باره هر کدام به همراه پارامترهای ورودی مطابق با مثال خودمان ببینیم.

توابع کار با پوشه ها در php

ساخت پوشه جدید

برای ساخت یک دایرکتری جدید با زبان اسکریپت نویسی php ، از تابع mkdir به صورت زیر استفاده می کنیم.

تابع mkdir ، چهار آرگومان مشخص را دریافت می کند ، در بین آنها ، اولین آرگومان اجباری است و بقیه موارد اختیاری است .

  1. $directory_path – با مشخص کردن مسیر نسبی (relative) و یا کامل (absolute) ، یک پوشه جدید در مسیر مورد نظر ساخته می شود .
  2. $mode – پارامتر mod ، مقادیر اوکتال (octal) را که به مسیر ساخته بستگی دارد ، می پذیرد
  3. $recursive – این پارامتر یک پرچم (flag) است و مقدار آن true یا false می باشد که مقدار true اجازه ساخت پوشه های تو در تو را می دهد .
  4. $context – شبیه به تابع unlink در php که یک استریم برای مشخص کردن پروتکل مورد نظر و غیره .. داریم .

این تابع مقدار بولین (boolean) را برگشت می دهد ، اگر عملیات موفقیت آمیز باشد ، true در غیر اینصورت false را return می کند .

لیست محتوایت دایرکتری در php

برای لیست کردن محتویات دایرکتری ، به توابع کار با پوشه ها در php که بالا اشاره کردیم نیاز داریم . این توابع opendir و readdir هستند .

در لیست کردن محتویات دایرکتری باید دو قدم زیر را انجام بدیم

  • قدم اول : باز کردن دایرکتری
  • قدم دوم : خواندن محتویات به صورت لیست شده و یک به یک توسط حلقه ها

قدم اول : باز کردن دایرکتری

همانطور که اسم تابع مشخص است ، تابع opendir برای این مرحله استفاده می شود . و ، دارای دو آرگومان است ، یکی برای مشخص کردن مسیر پوشه موردنظر و دیگری اختیاری است که یک استریم را دریافت می کند .

سینتکس کلی به اینصورت است :

برخلاف تابع mkdir که یک مقدار boolean را برگشت می دهد ، تابع opendir داده هایی مثل خروجی fopen، mysqli_query و.. غیره را return می کند .  بعد از دریافت مقدار خروجی ، می توانیم مراحل را برای خواندن محتویات پوشه دنبال کنیم .

قدم دوم : خواندن محتویات دایرکتری

برای این مرحله از تابع readdir() در یک حلقه استفاده می کنیم و این مورد را تا زمانیکه به انتها برسیم ، ادامه می دهیم .

برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود

با اجرای کد php بالا در هر خط یکی از موارد داخل دایرکتری چاپ می شود .

بنابراین با اجرای کد بالا و استفاده به دو تابع opendir و readdir می توانیم به راحتی محتوایت یک پوشه را بخوانیم .

بستن یک دایرکتری

بعد از بازکردن دایرکتری برای انجام عملیاتی مثل خواندن محتویات ، زمان این است که آن را ببندیم تا منابع سرور بیشتر درگیر نشوند . برای مثال به اینصورت :

در انتهای کد آن را با تابع closedir() می بندیم .

حذف پوشه در php

در مقاله های قبل (مدیریت فایل ها در  php) ، حذف یک فایل از دایرکتری با تابع unlink در php را دیدیم .مشابه آن ، برای حذف کل یک پوشه ، php تابعی به اسم rmdir با همان آرگومان های مشابه تابع mkdir معرفی کرده است .

اما ، این تابع برای حذف یک دایرکتری که خالی باشد ، استفاده می شود . برای حذف یک دیرکتری با فایل های درون آن ، کاربر باید یک تابع برای حذف تک تک فایل های درون یک دایرکتری به صورت تو در تو بنویسد و بعد تابع rmdir را که جزء توابع کار با پوشه ها در php را فراخوانی کند .

مثال جامع : توابع کار با پوشه ها در php

در این اسکریپت php قصد به کار بردن توابع برای ساخت یک دایرکتری جدید ، باز کردن و خواندن محتویات آن با یک حلقه و در نهایت بستن آن برای جلوگیری از پرشدن منابع سخت افزاری را داریم .

کد php بالا ، لیستی از فایل های ساخته شده با تابع fopen را برگشت می دهد .

و حالا یک مثال دیگر برای حذف یک دایرکتری با محتویات درون آن را می بینیم :

برای هریک از محتویات داخل پوشه مورد نظر ، تابع unlink برای حذف فایل ها به کار می رود و بعد از خالی شدن دایرکتری ، از تابع rmdir برای حذف پوشه خالی استفاده می کنیم .

نکته :

  • اگر یک بار از تابع opendir در اسکریپت php خود استفاده کنیم ، نیازی به پاس دادن مقدار خروجی آن که در یک متغییر ذخیره کردیم به توابع readdi() , closedir() و غیره .. نداریم . چونکه این توابع به طور پیش فرض به پوشه ای که باز شده و در مموری ذخیره شده است اشاره می کنند . بنابراینت فقط در صورت متغییر را به عنوان ورودی توابع بالا تعریف می کنیم که چندین بار از تابع opendir برای باز کردن پوشه استفاده کرده باشیم .
  • برای دریافت نتیجه موفقیت آمیز از توابع unlink و rmdir ، باید پرمشین های لازم برای تغییر فولدر مورد نظر (۶۴۴-۷۵۵)  را داشته باشیم .

امیدوارم آموزش توابع کار با پوشه ها در php برای شما مفید بوده باشه و بتونید در پروژه ها به سادگی از آن استفاده کنید .

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

موفق و پیروز باشید.

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۲)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. رضا ۱۵ دی ۱۴۰۰

    با سلام!
    اگه بخوایم نام یک فولدر رو عوض کنیم باید از چه تابعی استفاده بکنیم؟

    پاسخ
    1. حسن شفیعی ۱۶ دی ۱۴۰۰

      سلام.
      استفاده از تابع rename()

      پاسخ
دوره های آموزشی