Menulis dan Menambah pada Fail
Tulis data ke fail dengan file_put_contents dan FILE_APPEND.
Menulis dan Menambah pada Fail ialah pelajaran PHP Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran PHP Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus PHP Academy merangkumi sejumlah 4 pelajaran.
Menulis Fail dalam PHP
PHP menyediakan beberapa cara untuk menulis ke dalam fail:
file_put_contents()— tulis rentetan ke dalam fail dalam satu panggilanfopen()+fwrite()— penulisan berasaskan strim- Gunakan bendera
FILE_APPENDuntuk menambah kandungan dan bukannya menulis ganti
file_put_contents()
Tulis rentetan ke dalam fail — cipta fail jika fail itu belum wujud, dan tulis ganti jika fail itu sudah wujud:
<?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";
}Menambah dengan FILE_APPEND
Tambah kandungan pada akhir fail sedia ada dengan bendera 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
);Mod Penulisan fopen
Mod pembukaan untuk fopen menentukan cara fail dibuka:
'w'— tulis, pendekkan kepada panjang sifar atau cipta'a'— tulis, tambah pada akhir, cipta jika belum wujud'x'— tulis, gagal jika fail sudah wujud'r+'— baca+tulis dari awal, fail mesti wujud
fopen + fwrite
Penulisan berasaskan strim untuk kawalan yang tepat:
<?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';Menulis Fail CSV
Gunakan fputcsv() untuk menulis baris CSV yang diformat dengan betul:
<?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);Menulis Fail JSON
Siriankan data PHP kepada JSON dan tulisnya ke dalam fail:
<?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';Penulisan Fail Atomik
Tulis ke dalam fail sementara, kemudian namakannya semula untuk kemas kini atomik (selamat daripada ranap):
<?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';Keizinan dan Pemilikan
Tetapkan keizinan fail selepas penciptaan dengan 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';Fail Sementara
Cipta fail sementara dengan selamat menggunakan tempnam() atau 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 collectedMenyalin dan Memindahkan Fail
Salin dan namakan semula atau pindahkan fail dengan fungsi terbina dalam:
<?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';
}Semakan Ringkas
Bendera manakah yang dihantar kepada file_put_contents() untuk menambah kandungan pada akhir fail dan bukannya menulis gantinya?
Imbas Kembali: Menulis Fail
Asas penulisan fail:
file_put_contents()— penulisan atau penulisan ganti paling mudah- Bendera
FILE_APPENDuntuk menambah kandungan fopen('a', ...)+fwrite()untuk penstrimanfputcsv()untuk keluaran CSV- Penulisan atomik: tulis ke dalam fail sementara +
rename() chmod()untuk menetapkan keizinan selepas penciptaan
Pelajari PHP dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 49
- Pelajaran
- 195
Soalan Lazim
Adakah pelajaran “Menulis dan Menambah pada Fail” percuma?
Ya — teks penuh “Menulis dan Menambah pada Fail” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus PHP Academy, tingkat taraf kepada CoddyKit PRO. Kursus PHP Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Menulis dan Menambah pada Fail”?
Tulis data ke fail dengan file_put_contents dan FILE_APPEND. Anda berlatih PHP Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan PHP Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran PHP Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Menulis dan Menambah pada Fail” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran PHP Academy ini?
Ya. Setiap pelajaran PHP Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Membaca Fail dengan PHP
- Menulis dan Menambah pada Fail
- Mengendalikan Direktori
- Mengendalikan Muat Naik Fail