العمل مع نظام الملفات في PHP: من الأساسيات إلى المشاريع الحقيقية
\n\nالعمل مع نظام الملفات هو أحد المهام الأساسية لأي مطور ويب. في PHP، توجد مجموعة قوية من الدوال المدمجة التي تسمح بإنشاء الملفات وقراءتها وتحريرها وحذفها، بالإضافة إلى إدارة الدلائل. في هذه المقالة، سنستعرض أمثلة عملية ستساعدك على إتقان العمل مع الملفات في PHP وتطبيق هذه المعرفة في مشاريع حقيقية.
\n\nسواء كنت تقوم بإنشاء نظام تسجيل (logging)، أو أداة تحميل ملفات، أو مجرد حفظ بيانات المستخدمين، فإن فهم أساسيات نظام الملفات في PHP هو مهارة ضرورية. دعنا ننتقل إلى التطبيق العملي.
\n\nالدوال الأساسية للعمل مع الملفات
\n\nيوفر PHP عدة طرق للتفاعل مع الملفات. الأكثر شيوعًا هي استخدام fopen و fwrite و fread والدوال عالية المستوى file_get_contents و file_put_contents. دعنا نستعرضها من خلال الأمثلة.
إنشاء وكتابة ملف
\n\nلإنشاء ملف والكتابة فيه، استخدم الدالة fopen مع الوضع 'w' (كتابة مع مسح المحتوى) أو 'a' (إضافة إلى النهاية).
<?php\n$filename = 'log.txt';\n$file = fopen($filename, 'w');\n\nif ($file) {\n fwrite($file, "السطر 1: كتابة في الملف\\n");\n fwrite($file, "السطر 2: كتابة أخرى\\n");\n fclose($file);\n echo "تم إنشاء الملف وكتابته بنجاح.";\n} else {\n echo "خطأ في فتح الملف.";\n}\n?>\n\nإذا كنت بحاجة إلى كتابة البيانات بسرعة دون إدارة المؤشر، استخدم file_put_contents:
<?php\n$data = "محتوى جديد للملف.\\nالسطر الثاني.";\nfile_put_contents('data.txt', $data);\necho "تم كتابة البيانات.";\n?>\n\nقراءة ملف
\n\nلقراءة ملف سطرًا بسطر، استخدم fgets في حلقة:
<?php\n$file = fopen('log.txt', 'r');\nif ($file) {\n while (($line = fgets($file)) !== false) {\n echo $line . "<br>";\n }\n fclose($file);\n}\n?>\n\nبديل لذلك هو file_get_contents لقراءة المحتوى بالكامل في سلسلة نصية:
<?php\n$content = file_get_contents('log.txt');\necho nl2br($content);\n?>\n\nالتحقق من وجود الملفات وخصائصها
\n\nقبل العمل مع ملف، من المهم التأكد من وجوده وإمكانية القراءة أو الكتابة منه. يوفر PHP دوال file_exists و is_readable و is_writable و filesize.
مثال للتحقق من ملف
\n\n<?php\n$file = 'config.php';\n\nif (file_exists($file)) {\n echo "الملف موجود.<br>";\n \n if (is_readable($file)) {\n echo "الملف قابل للقراءة.<br>";\n echo "حجم الملف: " . filesize($file) . " بايت.";\n } else {\n echo "الملف موجود، لكنه غير قابل للقراءة.";\n }\n} else {\n echo "الملف غير موجود.";\n}\n?>\n\nالتحقق من نوع الملف
\n\nالدالة filetype تُرجع نوع الملف: 'file' أو 'dir' أو 'link' وغيرها.
<?php\n$path = 'uploads';\nif (file_exists($path)) {\n echo "النوع: " . filetype($path); // سيطبع 'dir' إذا كان مجلدًا\n}\n?>\n\nإدارة الدلائل
\n\nالعمل مع المجلدات في PHP لا يقل أهمية. يمكنك إنشاء وحذف ومسح الدلائل.
\n\nإنشاء وحذف المجلدات
\n\n<?php\n// إنشاء مجلد\nif (!file_exists('backup')) {\n mkdir('backup', 0777, true); // المعامل الثالث true يعني إنشاء متكرر\n echo "تم إنشاء المجلد.";\n}\n\n// حذف مجلد فارغ\nif (file_exists('temp')) {\n rmdir('temp');\n echo "تم حذف المجلد.";\n}\n?>\n\nمسح محتويات الدليل
\n\nالدالة scandir تُرجع مصفوفة بجميع الملفات والمجلدات