PHP / Файл уншиж бичих

Файл уншиж бичих

PHP нь сервер дээрх файлуудтай шууд ажиллах боломжийг олгодог — текст файл унших, шинэ файл үүсгэх, өгөгдөл нэмэх, файл устгах зэрэг үйлдлүүдийг хийж болно. Жижиг програмуудад өгөгдлийн сангүйгээр зүгээр л файлд хадгалах нь хялбар шийдэл байдаг. Нэвтрэлтийн бүртгэл (log), тохиргоо, кэш зэрэгт файлыг өргөн ашигладаг.

Файл унших

Файл унших хамгийн хялбар арга бол file_get_contents() — бүх агуулгыг нэг мөрт string болгон буцаана:

php
<?php
// Файлын бүх агуулгыг унших
$агуулга = file_get_contents('мэдэгдэл.txt');
echo $агуулга;

// Файл байгаа эсэхийг шалгаад унших
if (file_exists('мэдэгдэл.txt')) {
    $агуулга = file_get_contents('мэдэгдэл.txt');
    echo $агуулга;
} else {
    echo "Файл олдсонгүй.";
}

// Файлыг мөр мөрөөр массив болгон унших
$мөрүүд = file('жагсаалт.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($мөрүүд as $мөр) {
    echo $мөр . "<br>";
}
?>

file() функц нь файлын мөр бүрийг массивын элемент болгон буцаадаг тул мөр бүрийг тусад нь боловсруулахад тохиромжтой.

Файл бичих

file_put_contents() нь файлд бичих хамгийн хялбар арга. Файл байхгүй бол шинээр үүсгэнэ, байвал덮ийн бичнэ:

php
<?php
// Файлд бичих (байсан агуулгыг устгана)
file_put_contents('мэдэгдэл.txt', "Сайн уу, дэлхий!\n");

// Файлд нэмэх (байсан агуулга хэвээр үлдэнэ)
file_put_contents('мэдэгдэл.txt', "Шинэ мөр\n", FILE_APPEND);

// Массивыг файлд бичих
$өгөгдөл = "Нэр: Болд\nНас: 25\nХот: Улаанбаатар\n";
$амжилт = file_put_contents('хэрэглэгч.txt', $өгөгдөл);

if ($амжилт !== false) {
    echo "Амжилттай хадгаллаа.";
} else {
    echo "Хадгалахад алдаа гарлаа.";
}
?>

FILE_APPEND тугийг ашиглавал файлын эцэст нэмнэ — жишээлбэл log файл хөтлөхөд маш тохиромжтой.

fopen() — нарийн удирдлага

Илүү нарийн үйлдлүүд хийхэд fopen() функцийг ашигладаг. Файлыг нээх горим (mode)-оос хамааран унших, бичих, нэмэх боломжтой:

php
<?php
// 'r' — унших горим
$файл = fopen('мэдэгдэл.txt', 'r');
if ($файл) {
    while (!feof($файл)) {
        $мөр = fgets($файл);
        echo $мөр . "<br>";
    }
    fclose($файл); // файлыг заавал хаана
}

// 'w' — бичих горим (файлыг дахин тохируулна)
$файл = fopen('шинэ.txt', 'w');
if ($файл) {
    fwrite($файл, "Эхний мөр\n");
    fwrite($файл, "Хоёрдугаар мөр\n");
    fclose($файл);
}

// 'a' — нэмэх горим
$файл = fopen('бүртгэл.txt', 'a');
if ($файл) {
    $цаг = date('Y-m-d H:i:s');
    fwrite($файл, "[{$цаг}] Хэрэглэгч нэвтэрлээ\n");
    fclose($файл);
}
?>

fopen() ашигласны дараа fclose() дуудахаа мартвал хэрэглэгдэж буй нөөц чөлөөлөгдөхгүй — энэ бол нийтлэг алдаа.

Файлын мэдээлэл авах

php
<?php
$файл = 'мэдэгдэл.txt';

if (file_exists($файл)) {
    // Файлын хэмжээ (байт)
    echo filesize($файл) . " байт";

    // Сүүлд өөрчлөгдсөн цаг
    echo date('Y-m-d H:i:s', filemtime($файл));

    // Файл уу, хавтас уу?
    echo is_file($файл) ? "Файл байна" : "Файл биш";

    // Унших боломжтой эсэх
    echo is_readable($файл) ? "Унших боломжтой" : "Унших боломжгүй";
}

// Файл устгах
if (file_exists('хуучин.txt')) {
    unlink('хуучин.txt');
    echo "Устгалаа.";
}
?>

Бодит жишээ — энгийн бүртгэл систем

Маягтаас ирсэн мэдэгдлийг файлд хадгалах жишээ:

php
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $мэдэгдэл = trim($_POST['мэдэгдэл'] ?? '');

    if ($мэдэгдэл !== '') {
        $цаг = date('Y-m-d H:i:s');
        $мөр = "[{$цаг}] " . htmlspecialchars($мэдэгдэл) . "\n";
        file_put_contents('мэдэгдлүүд.txt', $мөр, FILE_APPEND);
        echo "Хадгаллаа!";
    }
}

// Хадгалагдсан мэдэгдлүүдийг унших
if (file_exists('мэдэгдлүүд.txt')) {
    $агуулга = file_get_contents('мэдэгдлүүд.txt');
    echo "<pre>" . $агуулга . "</pre>";
}
?>

Дараагийн хичээлд:

Объект хандалтат програмчлал (OOP)-ийн суурь болох класс ба объект ойлголтыг судална. Класс үүсгэж, объект үүсгэж, шинж чанар (property) болон аргуудыг (method) хэрхэн ашиглахыг жишээгээр үзнэ.