dir () function ကို directory လက်ကိုင်ကိုဖွင့်ပြီး လမ်းညွှန် အရာဝတ်ထုကိုပြန်ပေးရန်အသုံးပြုသည်။ directory ထဲတွင်ဖိုင်နှင့် subdirectory အမည်များကို ဖတ်ရှုခြင်း ()) ၏နည်းလမ်းကိုဖတ်ရှုခြင်း အားဖြင့်တစ်ခုဖတ်နိုင်သည်။
Syntax ဥပမာ:
$dir = dir('ခေြလမ်း');
while (($file = $dir->read()) !== false) {
echo $file . PHP_EOL;
}
$dir->close();
Read () နည်းလမ်းသည်အထူးလမ်းညွှန်နှစ်ခုအပါအ 0 င်လက်ရှိလမ်းညွှန်တွင်ဖိုင်အမည်တစ်ခုစီကိုပြန်ပို့မည်ဟုသတိပြုပါ ။ နှင့် .. နှင့်ဖယ်ထုတ်ထားခံရဖို့လိုအပ်ပါတယ်။
အောက်ဖော်ပြပါသည်နမူနာကုဒ်ဖြစ်သည် ။
<?php
function getSubDirectories($path) {
$subDirs = [];
if (!is_dir($path)) {
return $subDirs; // ခေြလမ်း不是目录,တစ် ဦး အချည်းနှီးသောခင်းကျင်းပြန်လာပါ
}
$dir = dir($path);
while (($entry = $dir->read()) !== false) {
// ထုတ်ပယ် . နှင့် ..
if ($entry === '.' || $entry === '..') {
continue;
}
$fullPath = $path . DIRECTORY_SEPARATOR . $entry;
if (is_dir($fullPath)) {
$subDirs[] = $entry;
}
}
$dir->close();
return $subDirs;
}
// ဖုန်းခေါ်ဆိုမှုခေါ်ဆိုမှု
$path = '/var/www/html';
$dirs = getSubDirectories($path);
print_r($dirs);
?>
ဒီကုဒ်ထဲမှာ:
Input Path သည်လမ်းညွှန်တစ်ခုရှိမရှိပထမ ဦး ဆုံးစစ်ဆေးပါ။
dir () မှတစ်ဆင့် directory လက်ကိုင်ကိုဖွင့်ပါ။
တစ်ခုချင်းစီကို entry တစ်ခုစီကိုဖတ်ပါ ။ နှင့် ...
၎င်းသည် directory ဟုတ်မဟုတ်ဆုံးဖြတ်ရန် is_dir () ကို သုံးပါ။
subdirectory အမည်များအားလုံးကို array ထဲသို့သိမ်းဆည်းပြီးပြန်လာပါ။
output page ရှိ subdirectory တစ်ခုချင်းစီအတွက် Access Link ကိုထုတ်လုပ်ရန်လိုအပ်ပါကနမူနာကုဒ်မှာအောက်ပါအတိုင်းဖြစ်သည် -
<?php
$path = '/var/www/html';
$dir = dir($path);
while (($entry = $dir->read()) !== false) {
if ($entry === '.' || $entry === '..') {
continue;
}
$fullPath = $path . DIRECTORY_SEPARATOR . $entry;
if (is_dir($fullPath)) {
echo '<a href="http://gitbox.net/' . $entry . '">' . $entry . '</a><br>';
}
}
$dir->close();
?>
ဤတွင်ကျွန်ုပ်တို့သည်မူလ URL domain name ကို GitBox.net ဖြင့်အစားထိုးရန်လွယ်ကူသောဆန္ဒပြမှုအတွက်အစားထိုးခဲ့သည်။
Directory Non-directory items : filter _Dir () ကိုသာ directory များကိုသာပြန်လည်ရယူရန်သေချာစေရန် filter ။
recursive traversal : အဆင့်အားလုံး၏ subdirectories ကိုသင်ရရှိလိုပါက၎င်းသည် directory ဖြစ်သည်ကိုဆုံးဖြတ်ပြီးနောက်အချက်အလက်များကိုထုတ်ဖော်ပြောဆိုနိုင်သည်။
Path Stitching : Cross-platform compatibility ကိုသေချာစေရန် directory_separator ကို သုံးပါ။
ခြွင်းချက်ကိုင်တွယ်ခြင်း - လမ်းညွှန်သည်တည်ရှိခြင်းရှိမရှိဆုံးဖြတ်ရန်မှာအမှားအယွင်းများကိုရှောင်ရှားရန်မဖွင့်မီဖတ်ရှုနိုင်သည်။
အထက်ဖော်ပြပါနည်းစနစ်များနှင့်ပေါင်းစပ်ထားသော dir () function ကိုအသုံးပြုခြင်းသည်အခြေအနေများအများစု၏လိုအပ်ချက်များကိုဖြည့်ဆည်းရန်လမ်းညွှန်ဖြတ်သန်းခြင်းနှင့် subdirectory ရယူခြင်းကိုအလွယ်တကူအကောင်အထည်ဖော်နိုင်သည်။
<?php
function getAllSubDirsRecursive($path) {
$result = [];
if (!is_dir($path)) {
return $result;
}
$dir = dir($path);
while (($entry = $dir->read()) !== false) {
if ($entry === '.' || $entry === '..') {
continue;
}
$fullPath = $path . DIRECTORY_SEPARATOR . $entry;
if (is_dir($fullPath)) {
$result[] = $entry;
// subdirectories ရရန် recursive ခေါ်ဆိုမှု
$result = array_merge($result, getAllSubDirsRecursive($fullPath));
}
}
$dir->close();
return $result;
}
$dirs = getAllSubDirsRecursive('/var/www/html');
print_r($dirs);
?>
ပိုမိုရှုပ်ထွေးသော directory အဆောက်အအုံများကိုကိုင်တွယ်ရန်အတွက်ဤကုဒ်သည်အဆင့်တိုင်းတွင် Subdirectorirectorirectorirection များကိုအားသွင်းပါလိမ့်မည်။