PHP Academy · درس

الكتابة إلى الملفات وإضافة البيانات إليها

اكتبوا البيانات إلى الملفات باستخدام file_put_contents وFILE_APPEND

الدرس 2 من 413 خطوة

الكتابة إلى الملفات وإضافة البيانات إليها درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.

كتابة الملفات في PHP

يوفر PHP عدة طرق للكتابة إلى الملفات:

  • file_put_contents() — كتابة سلسلة نصية إلى ملف باستدعاء واحد
  • fopen() + fwrite() — كتابة قائمة على التدفق
  • استخدموا علامة FILE_APPEND للإضافة بدلًا من الكتابة فوق المحتوى

file_put_contents()

اكتبوا سلسلة نصية إلى ملف — يُنشئ الملف إذا لم يكن موجودًا، ويستبدل محتواه إذا كان موجودًا:

<?php
$data = "Hello, PHP!\nThis is line 2.\n";

$bytes = file_put_contents('/tmp/output.txt', $data);

if ($bytes === false) {
    echo 'Failed to write';
} else {
    echo "Wrote $bytes bytes";
}

الإضافة باستخدام FILE_APPEND

أضيفوا محتوى إلى نهاية ملف موجود باستخدام علامة FILE_APPEND:

<?php
$logEntry = date('Y-m-d H:i:s') . ' - User logged in' . PHP_EOL;

file_put_contents(
    '/var/log/app.log',
    $logEntry,
    FILE_APPEND | LOCK_EX  // append + exclusive lock
);

أوضاع الكتابة في fopen

تحدد أوضاع الفتح في fopen كيفية فتح الملف:

  • 'w' — كتابة، اقتطاع الطول إلى صفر أو إنشاء الملف
  • 'a' — كتابة وإضافة، مع إنشاء الملف إذا لم يكن موجودًا
  • 'x' — كتابة، مع الفشل إذا كان الملف موجودًا بالفعل
  • 'r+' — قراءة وكتابة من البداية، ويجب أن يكون الملف موجودًا

fopen وfwrite

كتابة قائمة على التدفق للتحكم الدقيق:

<?php
$handle = fopen('/tmp/report.txt', 'w');

if ($handle === false) die('Cannot open file');

fwrite($handle, "Report generated: " . date('Y-m-d') . "\n");
fwrite($handle, str_repeat('-', 40) . "\n");
fwrite($handle, "Total: 1234\n");

fclose($handle);
echo 'Report written';

كتابة ملفات CSV

استخدموا fputcsv() لكتابة أسطر CSV منسقة بشكل صحيح:

<?php
$rows = [
    ['Name', 'Email', 'Score'],
    ['Alice', 'alice@test.com', 95],
    ['Bob',   'bob@test.com',   87],
];

$handle = fopen('/tmp/results.csv', 'w');
foreach ($rows as $row) {
    fputcsv($handle, $row);
}
fclose($handle);

كتابة ملفات JSON

حوّلوا بيانات PHP إلى JSON واكتبوها في ملف:

<?php
$config = [
    'version' => '2.0',
    'debug'   => false,
    'db'      => ['host' => 'localhost', 'port' => 3306],
];

$json = json_encode($config, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
file_put_contents('/app/config.json', $json);

echo 'Config saved';

الكتابة الذرية للملفات

اكتبوا في ملف مؤقت ثم أعدوا تسميته لإجراء تحديثات ذرية (آمنة عند حدوث تعطل):

<?php
$target  = '/app/data.json';
$tmpFile = $target . '.tmp.' . uniqid();

$data = json_encode(['ts' => time(), 'value' => 42]);

file_put_contents($tmpFile, $data, LOCK_EX);
rename($tmpFile, $target);  // atomic on most OSes

echo 'File updated atomically';

الأذونات والملكية

عيّنوا أذونات الملف بعد إنشائه باستخدام chmod():

<?php
$path = '/var/www/uploads/avatar.jpg';

// Copy uploaded temp file to destination
move_uploaded_file($_FILES['avatar']['tmp_name'], $path);

// Set permissions (owner read/write, group read, world read)
chmod($path, 0644);

echo 'File uploaded and permissions set';

الملفات المؤقتة

أنشئوا ملفات مؤقتة بأمان باستخدام tempnam() أو tmpfile():

<?php
// Create a named temp file
$tmpPath = tempnam(sys_get_temp_dir(), 'php_');
file_put_contents($tmpPath, 'temp data');
$content = file_get_contents($tmpPath);
unlink($tmpPath);  // delete when done

// Anonymous temp file handle
$tmp = tmpfile();
fwrite($tmp, 'anonymous temp');
// auto-deleted when $tmp is garbage collected

نسخ الملفات ونقلها

انسخوا الملفات وأعيدوا تسميتها أو انقلوها باستخدام الدوال المضمنة:

<?php
// Copy a file
copy('/src/template.html', '/dst/page.html');

// Move / rename
rename('/tmp/upload_abc', '/storage/images/photo.jpg');

// Delete
unlink('/tmp/old_file.txt');

// Check if file was copied successfully
if (copy('a.txt', 'backup.txt')) {
    echo 'Backup created';
}

تحقق سريع

ما العلامة التي تمررونها إلى file_put_contents() لإضافة محتوى إلى نهاية ملف بدلًا من الكتابة فوقه؟

مراجعة: كتابة الملفات

أساسيات كتابة الملفات:

  • file_put_contents() — أبسط طريقة للكتابة أو الاستبدال
  • علامة FILE_APPEND للإضافة
  • fopen('a', ...) + fwrite() للكتابة عبر التدفق
  • fputcsv() لإخراج CSV
  • الكتابة الذرية: الكتابة إلى ملف مؤقت + rename()
  • chmod() لتعيين الأذونات بعد الإنشاء
البدء مجانًا

تعلم PHP مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
49
الدروس
195

الأسئلة الشائعة

هل درس «الكتابة إلى الملفات وإضافة البيانات إليها» مجاني؟

نعم — نص درس «الكتابة إلى الملفات وإضافة البيانات إليها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.

ماذا ستتعلم في «الكتابة إلى الملفات وإضافة البيانات إليها»؟

اكتبوا البيانات إلى الملفات باستخدام file_put_contents وFILE_APPEND تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟

لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «الكتابة إلى الملفات وإضافة البيانات إليها»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟

نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. قراءة الملفات باستخدام PHP
  2. الكتابة إلى الملفات وإضافة البيانات إليها
  3. التعامل مع المجلدات
  4. التعامل مع تحميل الملفات
← العودة إلى PHP Academy