@adil16

Как записывать в файл?

$filename = 'test.txt';
$somecontent = "Добавить это к файлу\n";

// Вначале давайте убедимся, что файл существует и доступен для записи.
if (is_writable($filename)) {

    // В нашем примере мы открываем $filename в режиме "записи в конец".
    // Таким образом, смещение установлено в конец файла и
    // наш $somecontent допишется в конец при использовании fwrite().
    if (!$handle = fopen($filename, 'a')) {
         echo "Не могу открыть файл ($filename)";
         exit;
    }

    // Записываем $somecontent в наш открытый файл.
    if (fwrite($handle, $somecontent) === FALSE) {
        echo "Не могу произвести запись в файл ($filename)";
        exit;
    }

    echo "Ура! Записали ($somecontent) в файл ($filename)";

    fclose($handle);

} else {
    echo "Файл $filename недоступен для записи";
}


Мне непонятен код, который приводится на пхп.нет

Что значит восклицательный знак перед переменной!$handle в этой строке
if (!$handle = fopen($filename, 'a')) {
         echo "Не могу открыть файл ($filename)";
         exit;
    }


и почему здесь происходит запись в файл, если написано просто условие, что нужно вывести "Не могу произвести запись в файл ($filename)":

if (fwrite($handle, $somecontent) === FALSE) {
        echo "Не могу произвести запись в файл ($filename)";
        exit;
    }
  • Вопрос задан
  • 135 просмотров
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Хороший вопрос, кстати. Сначала ответим на вопрос из заголовка

file_put_contents($filemame, $somecontent, FILE_APPEND);


ВСЁ. Это весь код, который нужен, чтобы записать в файл. Одна единственная строчка, без всех этих танцев с саблями.

А по поводу кода из мануала - это чудовищный, идиотский рудимент из прошлого века, который остался в мануале по недосмотру. Так писать нельзя. Не нужно писать проверки на каждый чих - пхп сам прекрасно сообщит об ошибке. Не нужно заменять четкое и однозначное сообщение об ошибке изложением в свободной форме. И тем более не надо вываливать эти изложения на пользователя сайта. Ему совершенно не интересно читать что у тебя какой то файл не прочитался
Ответ написан
AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"
что значит восклицательный знак перед переменной!$handle в этой строке

Восклицательный знак, как и в большинстве си подобных языках означает отрицание. Пхп имеет возможность присвоение значения в переменной, а дальше по приоритету, отрицание относится к переменной. Аналогом бы служило
$handle = fopen($filename, 'a');
if (!$handle) {
         echo "Не могу открыть файл ($filename)";
         exit;
    }


и почему здесь происходит запись в файл, если написано просто условие, что нужно вывести "Не могу произвести запись в файл ($filename)"

Здесь похоже. Функция fwrite() проводит запись в файл. В случае ошибки она возвращает false . То есть, функция в условии выполняется, возвращает значение, а дальше проверяется.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы