التعامل مع المجلدات
اعرضوا المجلدات وأنشئوها واحذفوها باستخدام scandir وmkdir
التعامل مع المجلدات درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.
عمليات الأدلة في PHP
يوفر PHP دوال لسرد الأدلة وإنشائها والتنقل فيها وحذفها على الخادم:
scandir()— سرد محتويات الدليلmkdir()— إنشاء دليلrmdir()— إزالة دليل فارغglob()— العثور على الملفات المطابقة لنمط
scandir()
سرد جميع الملفات والأدلة الموجودة في دليل:
<?php
$entries = scandir('/var/www/html/uploads');
// scandir includes '.' and '..'
$entries = array_diff($entries, ['.', '..']);
foreach ($entries as $entry) {
echo $entry . PHP_EOL;
}مطابقة الأنماط باستخدام glob()
تعيد glob() الملفات المطابقة لنمط بأسلوب shell:
<?php
// Find all PHP files in a directory
$phpFiles = glob('/var/www/html/*.php');
// Recursively with GLOB_BRACE
$logs = glob('/var/log/{app,error,access}.log', GLOB_BRACE);
foreach ($phpFiles as $file) {
echo basename($file) . PHP_EOL;
}mkdir() والأذونات
أنشئوا دليلًا واحدًا أو عدة أدلة متداخلة:
<?php
$dir = '/var/www/uploads/2024/05';
// Create nested directories in one call:
if (!is_dir($dir)) {
mkdir($dir, 0755, true); // true = recursive
echo "Created: $dir";
}حذف الأدلة
تزيل rmdir() الأدلة الفارغة فقط. وللحذف مع المحتويات، استخدموا دالة递ursive:
<?php
function deleteDir(string $path): void {
foreach (scandir($path) as $entry) {
if ($entry === '.' || $entry === '..') continue;
$full = $path . DIRECTORY_SEPARATOR . $entry;
is_dir($full) ? deleteDir($full) : unlink($full);
}
rmdir($path);
}
deleteDir('/tmp/old_cache');التكرار عبر الدليل باستخدام DirectoryIterator
طريقة كائنية التوجه للتكرار عبر محتويات الدليل:
<?php
$dir = new DirectoryIterator('/var/www/html/images');
foreach ($dir as $info) {
if ($info->isDot()) continue;
echo $info->getFilename();
echo ' (' . $info->getSize() . ' bytes)';
echo PHP_EOL;
}RecursiveDirectoryIterator
كرّروا تكراريًا عبر جميع الملفات في شجرة الدليل:
<?php
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('/var/www/src')
);
foreach ($iterator as $file) {
if ($file->isDot()) continue;
if ($file->getExtension() === 'php') {
echo $file->getPathname() . PHP_EOL;
}
}getcwd وchdir
احصلوا على دليل العمل الحالي وغيّروه:
<?php
$originalDir = getcwd();
echo 'Current: ' . $originalDir . PHP_EOL;
chdir('/var/www/html');
echo 'Changed to: ' . getcwd() . PHP_EOL;
// Restore
chdir($originalDir);
echo 'Restored: ' . getcwd() . PHP_EOL;معالجة المسارات
أنشئوا مسارات الملفات وحلّلوها باستخدام الثوابت والدوال المحمولة بين الأنظمة:
<?php
// DIRECTORY_SEPARATOR = '/' on Unix, '\\' on Windows
$base = '/var/www/app';
$subPath = 'uploads' . DIRECTORY_SEPARATOR . 'images';
$full = $base . DIRECTORY_SEPARATOR . $subPath;
echo realpath($full); // resolves symlinks
// __DIR__ is the directory of the current file
$configPath = __DIR__ . '/../config/settings.json';
echo realpath($configPath);مساحة القرص
تحققوا من مساحة القرص المتاحة والإجمالية:
<?php
$path = '/var/www';
$free = disk_free_space($path);
$total = disk_total_space($path);
$used = $total - $free;
echo 'Used: ' . round($used / 1024**3, 2) . ' GB';
echo 'Free: ' . round($free / 1024**3, 2) . ' GB';
echo 'Total: ' . round($total / 1024**3, 2) . ' GB';دليل SPL المؤقت
استخدموا دائمًا sys_get_temp_dir() للعثور على الدليل المؤقت الصحيح عبر الأنظمة الأساسية:
<?php
$tmpDir = sys_get_temp_dir();
echo 'Temp dir: ' . $tmpDir;
// Create a unique temporary directory
$uniqueDir = $tmpDir . DIRECTORY_SEPARATOR . 'myapp_' . uniqid();
mkdir($uniqueDir, 0700);
// ... use directory ...
// cleanup when doneتحقق سريع
ما دالة PHP التي تنشئ الأدلة المتداخلة تكراريًا باستدعاء واحد؟
مراجعة: العمل مع الأدلة
عمليات الأدلة:
scandir()— سرد المحتويات (يتضمن . و ..)glob()— العثور على الملفات حسب النمطmkdir($path, 0755, true)— الإنشاء التكراريrmdir()— إزالة دليل فارغ- RecursiveDirectoryIterator للتنقل العميق
__DIR__وDIRECTORY_SEPARATORلمسارات محمولة بين الأنظمة
الأسئلة الشائعة
هل درس «التعامل مع المجلدات» مجاني؟
نعم — نص درس «التعامل مع المجلدات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.
ماذا ستتعلم في «التعامل مع المجلدات»؟
اعرضوا المجلدات وأنشئوها واحذفوها باستخدام scandir وmkdir تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟
لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «التعامل مع المجلدات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟
نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- قراءة الملفات باستخدام PHP
- الكتابة إلى الملفات وإضافة البيانات إليها
- التعامل مع المجلدات
- التعامل مع تحميل الملفات