در این آموزش موارد زیر را برسی خواهیم کرد:
- مرجع توابع کار با پوشه ها در PHP
- تابع ( ) chdir
- تابع ( ) chroot
- تابع ( ) dir
- تابع ( ) closedir
- تابع ( ) getcwd
- تابع ( ) opendir
- تابع ( ) readdir
- تابع ( ) scandir
توابع کار با پوشه ها در PHP :
به وسیله توابع کار با پوشه ها در PHP ، می توانید اطلاعات لازم درباره پوشه های روی سرورتان و محتویات درون آنها را بدست آورده و در خروجی نمایش دهید.
برای مثال می توانید لیست پوشه ها و یا فایل های موجود آنها را در خروجی نمایش داده و یا بین پوشه ها حرکت کنید.
آیا نصب برنامه ای لازم است ؟
تمامی توابع کار با پوشه ها جزء هسته اصلی PHP بوده و به صورت پیش فرض نصب می باشند . بنابراین برای استفاده از آنها نیاز به نصب برنامه ای خاص یا تغییر تنظمیاتی در سرور خود ندارید.
لیست توابع کار با پوشه ها در PHP :
chdir ( ) به وسیله این تابع می توانید پوشه جاری که درون آن هستید را عوض کنید .
chroot ( ) به وسیله این تابع می توانید پوشه اصلی ( root ) پروسه جاری خود را عوض کنید .
dir ( ) این تابع برای باز کردن و دسترسی به یک پوشه در سرور استفاده می شود .
closedir ( ) این تابع پوشه جاری و دسترسی به آن را می بندد .
getcwd ( ) این تابع آدرس و نام پوشه جاری که درون آن هستید را نمایش می دهد .
opendir ( ) این تابع ، پوشه ای که نام یا آدرس آن را برایش تعیین کرده اید ، باز می کند .
readdir ( ) این تابع می تواند فایل ها و محتویات درون یک پوشه را که قبلا توسط تابع ( ) opendir باز شده است را خوانده و بر می گرداند .
scandir ( ) این تابع لیست فایل ها و محتویات درون یک پوشه یا مسیر تعیین شده برای آن را به صورت یک آرایه بر می گرداند .
تابع ( ) chdir در PHP :
تابع ( ) chdir ، پوشه جاری را به پوشه ای که نام آن را برایش تعیین کرده اید ، تغییر می دهد .
برای مثال فرض کنید که در حال حاضر در پوشه main هستید . می خواهید دستوری بنویسید که برنامه به پوشه images برود . در این حالت از تابع ( ) chdir استفاده می شود .
نکته : تابع ( ) chdir در صورت موفقیت برای جا به جایی پوشه به پوشه مورد نظر ، مقدار True را به صفحه بر می گرداند . در غیر مقدار ارسالی آن False خواهد بود .
شکل کلی تعریف و استفاده از تابع ( ) chdir در PHP به صورت زیر است :
chdir ( directory ) ;
directory: این پارامتر تعیین کننده نام یا آدرس پوشه ای است که می خواهید برنامه از پوشه جاری به آن منتقل شود .
استفاده از این پارامتر اجباری است .
مثال : در مثال زیر نحوه استفاده از تابع ( ) chdir را در عمل نمایش داده ایم . برنامه ابتدا در پوشه main قرار دارد ، سپس با استفاده از تابع ( ) chdir ، پوشه جاری به پوشه images تغییر می یابد :
<?php // به وسیله این دستور پوشه جاری که برنامه در آن است را نمایش داده ایم echo getcwd(); echo "<br />"; // توسط این دستور پوشه را به پوشه مورد نظر منتقل کرده ایم chdir ( " images " ) ; echo "<br />"; // مجددا پوشه جاری را نمایش داده ایم echo getcwd(); ?>
خروجی:
C:\tik4\main
C:\tik4\main\images
تابع ( ) chroot در PHP :
تابع ( ) chroot ، پوشه اصلی ( root ) جاری پروسه را به پوشه تعیین شده برای آن تغییر می دهد.
برای مثال فرض کنید که در یک وب سایت PHP ، در حال حاضر پوشه main پوشه اصلی است . شما می خواهید کدی طراحی نمایید تا پوشه اصلی را به پوشه default تغییر دهید . برای این منظور باید از تابع ( ) chroot استفاده نمایید.
نکات مهم درباره تابع ( ) chroot :
نکته ۱: این تابع در صورت موفقیت در تعویض پوشه اصلی به پوشه مورد نظر ، مقدار True را به صفحه بر می گرداند . در غیر اینصورت مقدار ارسالی False خواهد بود .
نکته ۲: این تابع بر روی پلتفرم های ویندوزی کار نمی کند .
شکل کلی تعریف و استفاده از تابع ( ) chroot در PHP به صورت زیر است :
chroot ( directory ) ;
directory: این پارامتر تعیین کننده نام یا آدرس پوشه ای است که می خواهید پوشه اصلی برنامه از پوشه جاری به آن منتقل شود.
استفاده از این پارامتر اجباری است.
تابع ( ) dir در PHP :
تابع ( ) dir ، پوشه تعیین شده برای آن را باز کرده و نتیجه را به صورت یک object به صفحه ارسال می کند . object ارسالی دارای ۳ متد ( ) read ( ) ، rewind و ( ) close است که از آنها می توان برای کار با اطلاعات خروجی تابع استفاده کرد . نحوه کار با این متدها در مثال عملی نمایش داده شده است.
نکته : تابع ( ) dir ، در صورتی که موفق شود پوشه تعیین شده برای آن را باز کند ، لیست محتویات درونی پوشه را به صورت یک آرایه بر می گرداند.
اما در صورتی که پوشه باز نشده و یا آن را پیدا نکند ، مقدار False را به همراه یک error به صفحه بر می گرداند . شما می توانید پیام error ارسالی را با استفاده از یک علامت @ در مقابل نام تابع مخفی نمایید.
شکل کلی تعریف و استفاده از تابع ( ) dir در PHP به صورت زیر است:
dir ( directory );
directory: این پارامتر تعیین کننده نام یا آدرس پوشه ای است که می خواهید برنامه آن را باز کرده و بخواند .
استفاده از این پارامتر اجباری است .
مثال های عملی :
در مثال های زیر نحوه کار با تابع ( ) dir را در عمل به شما نمایش داده ایم .
مثال ۱: در مثال زیر با استفاده از تابع ( ) dir ، پوشه images را باز کرده ایم . سپس با استفاده از متدهای object ارسالی آن به صغحه لیست آیتم های موجود در آن را در خروجی نمایش داده ایم :
<?php // به وسیله این دستور پوشه مورد نظر را باز کرده ، خوانده و در یک آرایه ذخیره نموده ایم $ dir = dir ( " images " ) ; // توسط این دستور آیتم های موجود در پوشه را در خروجی نمایش داده ایم while ( ( $ file = $dir -> read ( ) ) !== false ) { echo "filename: " . $file . "<br />"; } // در پایان نیز پوشه باز شده را بسته ایم $dir -> close ( ) ; ?>
خروجی:
filename: .
filename: ..
filename: ASP_Net.gif
filename: HTML.gif
filename: PHP.gif
مثال ۲: در مثال دوم مثال قبل را باز نویسی کرده ایم ، با این تفاوت که در ابتدای نام تابع ( ) dir یک علامت @ قرار داده ایم . قرار دادن این علامت باعث می شود تا error احتمالی در صورت باز نشدن پوشه مورد نظر به هر دلیل ، نمایش داده نشود:
<?php // به وسیله این دستور پوشه مورد نظر را باز کرده ، خوانده و در یک آرایه ذخیره نموده ایم $ dir =@ dir ( " images " ) ; // توسط این دستور آیتم های موجود در پوشه را در خروجی نمایش داده ایم while ( ( $ file = $dir -> read ( ) ) !== false ) { echo "filename: " . $file . "<br />"; } // در پایان نیز پوشه باز شده را بسته ایم $dir -> close ( ) ; ?>
تابع ( ) closedir در PHP :
تابع ( ) closedir ، پوشه ای که قبلا توسط تابع ( ) opendir باز شده و برنامه به آن دسترسی دارد ، را می بندد.
برای بسته شدن پوشه مورد نظر ، باید نام آن پوشه را به صورت یک پارامتر به تابع ( ) closedir ارسال نمایید.
شکل کلی تعریف و استفاده از تابع ( ) closedir در PHP به صورت زیر است:
closedir ( directory );
directory: این پارامتر تعیین کننده نام یا آدرس پوشه ای است که می خواهید برنامه آن را ببندد .
استفاده از این پارامتر اجباری است .
مثال: در مثال زیر با استفاده از تابع ( ) closedir ، پوشه ای را که قبلا برنامه باز کرده و به آن دسترسی داشته را بسته ایم : در آن را در خروجی نمایش داده ایم:
<?php // به وسیله این دستور پوشه مورد نظر را باز کرده ، خوانده و در یک آرایه ذخیره نموده ایم $ dir = opendir ( " image " ) ; // توسط این دستور آیتم های موجود در پوشه را در خروجی نمایش داده ایم while ( ( $ file = readdir ( $dir ) ) !== false ) { echo "filename: " . $file . "<br />"; } // در پایان نیز پوشه باز شده را بسته ایم closedir ( $dir ) ; ?>
خروجی:
filename: .
filename: ..
filename: ASP_Net.gif
filename: HTML.gif
filename: PHP.gif
تابع ( ) getcwd در PHP :
تابع ( ) getcwd ، نام و آدرس کامل پوشه ای که برنامه در آن لحظه در آن قرار دارد را به صفحه بر می گرداند.
تابع ( ) getcwd در صورت موفقیت در خواندن نام و آدرس پوشه جاری ، مقدار آن را به صفحه بر می گرداند . در غیر اینصورت مقدار برگشتی آن False خواهد بود.
شکل کلی تعریف و استفاده از تابع ( ) getcwd در PHP به صورت زیر است:
getcwd ( );
مثال: در مثال زیر با استفاده از تابع ( ) getcwd ، پوشه ای که برنامه در حال حاضر در آن قرار دارد ، را در خروجی نمایش داده ایم :
<?php echo getcwd( ); ?>
خروجی:
C:\tik4\main
تابع ( ) opendir در PHP:
تابع ( ) opendir ، پوشه تعیین شده برای آن را باز کرده و لیست محتویات درونش را برای استفاده با متدهای ( ) readdir و ( ) closedir به صفحه بر می گرداند . به وسیله متد ( ) readdir می توانید محتویات درون پوشه را خوانده و در خروجی نمایش دهید . همچنین به وسیله متد ( ) closedir ، در پایان کار پوشه را می بندید .
نکته : تابع ( ) opendir ، در صورت موفقیت در باز کردن پوشه مورد نظر لیست محتویاتش را به صفحه برگشتانده و در صورتی که به هر دلیل موفق به باز کردن پوشه نشده و یا آن را پیدا نکند ، مقدار False یک error را به صفحه بر می گرداند .
شما می توانید با قرار دادن علامت @ در مقایل نام تابع ، error احتمالی آن را مخفی سازید.
شکل کلی تعریف و استفاده از تابع ( ) opendir در PHP به صورت زیر است :
opendir ( directory );
directory: این پارامتر تعیین کننده نام یا آدرس پوشه ای است که می خواهید برنامه آن را باز کرده و بخواند .
استفاده از این پارامتر اجباری است .
مثال های عملی :
در مثال های زیر نحوه کار با تابع ( ) opendir را در عمل به شما نمایش داده ایم.
مثال ۱: در مثال زیر با استفاده از تابع ( ) opendir ، پوشه images را باز کرده ایم . سپس با استفاده از متدهای object ارسالی آن به صفحه لیست آیتم های موجود در آن را در خروجی نمایش داده ایم :
<?php // به وسیله این دستور پوشه مورد نظر را باز کرده ، خوانده و در یک آرایه ذخیره نموده ایم $ dir = opendir ( " images " ) ; // توسط این دستور آیتم های موجود در پوشه را در خروجی نمایش داده ایم while ( ($file = readdir ( $dir ) ) !== false ) { echo "filename: " . $file . "<br />"; } // در پایان نیز پوشه باز شده را بسته ایم closedir ( $dir ) ; ?>
خروجی:
filename: .
filename: ..
filename: ASP_Net.gif
filename: HTML.gif
filename: PHP.gif
تابع ( ) readdir در PHP :
تابع ( ) readdir ، آیتم های موجود در پوشه ای که قبلا توسط متد ( ) opendir باز شده را خوانده و به عنوان خروجی به صفحه بر می گرداند.
نکته : تابع ( ) readdir در صورت موفقیت در خواندن پوشه ، نام آیتم های موجود در پوشه را به عنوان خروجی بر می گرداند . اما اگر به هر دلیلی نتواند پوشه را بخواند ، مقدار برگشتی آن False خواهد بود.
شکل کلی تعریف و استفاده از تابع ( ) readdir در PHP به صورت زیر است:
readdir ( dir_stream );
dir_stream: این پارامتر تعیین کننده نام متغیر آرایه ای است که لیست آیتم های موجود در پوشه را که قبلا توسط تابع ( ) opendir درون آن ریخته اید ، است . نحوه استفاده از این پارامتر در مثال نمایش داده شده است .
استفاده از این پارامتر اجباری است.
مثال های عملی :
در مثال های زیر نحوه کار با تابع ( ) readdir را در عمل به شما نمایش داده ایم .
مثال ۱: در مثال زیر با استفاده از تابع ( ) opendir ، پوشه images را باز کرده ایم . سپس با استفاده از متدهای object ارسالی آن به صفحه لیست آیتم های موجود در آن را به وسیله تابع ( ) readdir یکی یکی خوانده و در خروجی نمایش داده ایم :
<?php // به وسیله این دستور پوشه مورد نظر را باز کرده ، خوانده و در یک آرایه ذخیره نموده ایم $ dir = opendir ( " images " ) ; // توسط این دستور آیتم های موجود در پوشه را در خروجی نمایش داده ایم while ( ($file = readdir ( $dir ) ) !== false ) { echo "filename: " . $file . "<br />"; } // در پایان نیز پوشه باز شده را بسته ایم closedir ( $dir ) ; ?>
خروجی:
filename: .
filename: ..
filename: ASP_Net.gif
filename: HTML.gif
filename: PHP.gif
تابع ( ) scandir در PHP :
تابع ( ) scandir ، لیست فایل ها و پوشه های موجود در یک مسیر خاص را به صورت یک آرایه بر می گرداند .
نکته : خروجی این تابع در صورت موفقیت در خواندن پوشه آرایه ای از لیست فایل ها و پوشه ها و در صورت عدم موفقیت مقدار False به همراه یک پیام هشدار خواهد بود .
شکل کلی تعریف و استفاده از تابع ( ) scandir در PHP به صورت زیر است :
scandir ( directory , sort );
directory: این پارامتر تعیین کننده نام یا آدرس پوشه ای است که می خواهید برنامه آن را باز کرده لیست فایل های موجود در آن را در خروجی برگرداند .
استفاده از این پارامتر اجباری است.
sort: این پارامتر ترتیب نشان دادن آیتم های آرایه خروجی تابع را مشخص می کند . به صورت پیش فرض این آرایه از عضو ۰ شروع شده و رو به افزایش می رود . اگر مقدار sort را روی ۱ تنظیم نمایید ، آرایه از انتها به صورت کاهشی نمایش داده خواهد شد .
استفاده از این پارامتر اختیاری است.
مثال های عملی :
در مثال های زیر نحوه کار با تابع ( ) ۸ را در عمل به شما نمایش داده ایم .
مثال ۱: در مثال زیر با استفاده از تابع ( ) ۸ ، فایل ها و اجزای پوشه images را به صورت یک آرایه در خروجی نمایش داده ایم . در مثال اول ، ترتیب آرایه به صورت پیش فرض و از کم به زیاد می باشد :
<?php print_r ( scandir ( " images " ) ); ?>
خروجی:
Array (
[۰] => .
[۱] => ..
[۲] => ASP.jpg
[۳] => PHP.jpg
[۴] => HTML.gif
)
مثال ۲: در مثال دوم ، کد مثال ۱ را باز نویسی کرده ایم با این تفاوت که با مقدار دهی پارامتر sort به ۱ ، باعث شده ایم تا ترتیب نمایش آرایه برعکس شده و از انتها به ابتدا باشد :
<?php print_r ( scandir ( " images " , 1 ) ); ?>
خروجی:
Array (
[۴] => HTML.gif
[۳] => PHP.jpg
[۲] => ASP.jpg
[۱] => ..
[۰] => .
)