Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vtoraya_chast_uchebnika_po_WWW_Okonchat_variant...doc
Скачиваний:
33
Добавлен:
27.09.2019
Размер:
6.06 Mб
Скачать

Пример 5‑54

<?php

1. echo "Путь до корневой папки веб-сервера = ";

2. echo $_SERVER['DOCUMENT_ROOT'],"<br>";

3. $a=__FILE__;//Переменная $a получает значение текущего каталога

4. echo "a = ",$a, "<br>";

5. $descript1=fopen("D:/FilesForPHP/file1.txt", "ab");//Открытие файла

6. if(!$descript1) exit ("Ошибка 1-го открытия файла");

7. echo "descript1= ", $descript1, "<br>";

8. $descript2=fopen("../../../FilesForPHP/file1.txt", "ab");

9. if(!$descript2) exit ("Ошибка 2-го открытия файла");

10. echo "descript2 = ", $descript2, "<br>";

11. $primerstring ='Stroka';

12. echo "строка = ", $primerstring, "<br>";

14. $kolbyte= fwrite($descript1, $string);

//$kolbyte= fwrite($descript1, $primerstring, 4);

15. echo "kolbyte = ", $kolbyte;

16. fclose($descript1);//закрытие файла

17. fclose($descript2);//закрытие файла

18. $descript3=fopen("D:/FilesForPHP/file2.txt", "ab");//Открытие файла

19. if(!$descript3) exit ("Ошибка 3-го открытия файла");

20. echo "descript3 = ", $descript3, "<br>";

21. fclose($descript3);//закрытие файла

?>

В этом примере специально пронумерованы строки для того, чтобы удобней было провести анализ.

В строках 1-2 организована печать упомянутого выше элемента индексированного массива $_SERVER с индексом 'DOCUMENT_ROOT'.

Строки 3-4 показывают, что значения пути до нужного файла сохраняются не только в рассмотренном выше массиве, но и в так называемых стандартных константах47 PHP, которые также являются предопределёнными и глобальными. В частности, для этого используется константа _FILE_.

Ниже в таблице Таблица 5 -14 приводятся и другие наиболее важные константы такого рода и их значение.

Таблица 5‑14

Перечень некоторых предопределённых констант php

Константа

Значение

_FILE_

Имя анализируемой в данный момент программы. Если используется внутри файла, включенного в программу с помощью include или require, возвращается имя включенного, а не родительского файла

_LINE_

Номер текущей строки в анализируемом файле (не чувствительно к регистру). Если используется внутри включаемого файла, возвращается номер строки в этом файле

PHP_VERSION

Строковое представление текущей версии анализатора РНР

PHP_OS

Название операционной системы, в которой работает анализатор РНР. К числу возможных значений относятся, например: AIX, Darwin (MacOS), Linux, SunOS, WIN32, WINNT

TRUE

Обозначает истинное логическое значение (не чувствительно к регистру)

FALSE

Обозначает ложное логическое значение (не чувствительно к регистру)

E_ERROR

Обозначает ошибочное состояние, не связанное с ошибкой разбора программы, в котором не возможно автоматическое восстановление состояния

E_WARN ING

Обозначает состояние, при котором PHP-машина оповещается о наличии некоторой нештатной ситуации, которая позволяет продолжить выполнение программы. Такие ситуации обычно обрабатываются внутри самой программы

E_PARSE

Анализатор обнаружил синтаксические ошибки в файле программы. Восстановление невозможно

E_NOTICE

Произошло какое-то событие, которое может быть или не быть ошибкой. Выполнение программы продолжено. К числу событий этого класса относятся, например, использование строки, не закрытой кавычками, или попытка использования переменной, значение которой еще не установлено

E_ALL

Объединяет все константы семейства Е_*. При использовании совместно с функцией error_reporting() приведет к генерации сообщений о любых ошибках и предупреждениях РНР-машины

Примечание:

Константы семейства Е_* обычно используются функцией error_reporting() для включения или отключения генерации сообщений об ошибках различных степеней важности.

Идём дальше.

В строке 5 осуществляется открытие созданного заранее текстового файла file1.txt. Это файл показан на Рис. 5 -16. Файл открывается на запись. Что означает параметр b, читатели должны вспомнить сами.

Рис. 5‑16. Файл, открываемый в скрипте Пример 5 -54

В результате нормального (безошибочного) открытия файла создаётся его дескриптор $descript1.

В строке 6 отработалась бы ошибка файла, если бы она была. Так как в данном случае её нет, в строке 7 производится вывод значения первого дескриптора нашего файла.

В строках 8-10 показывается, что файл можно открывать несколько раз (в данном случае – второй), и при этом можно создавать ему новый дескриптор.

Далее приводятся примеры использования некоторых других функций.

Строки 11-15 объясняют, как работает функция fwrite().

Синтаксис этой функции выглядит так:

int fwrite ( resource handle, string stroka [, int length] )

Эта функция записывает содержимое строки stroka в файловый поток handle (напомним, что в качестве первого параметра handle, тип которого – resource, выступает дескриптор файла или, как ещё говорят, файлового потока).

Если передан аргумент length, запись остановится после того, как length байтов будут записаны или будет достигнут конец строки string, в зависимости оттого, что произойдёт первым. Эта функция возвращает количество записанных байтов или FALSE в случае ошибки.

Результат работы строки 14 представлен на рисунке Рис. 5-4.

Рис. 5‑17. Файл file1.txt после дозаписи в него строки Stroka

После строки 14 идёт закомментированная строка с использованием третьего необязательного параметра функции fwrite( ). Читателям предлагается самим определить, что отобразиться в браузере и каким будет результирующий файл при выполнении скрипта, в котором она будет разкомментирована.

В строках 15, 16 происходит закрытие файла (или файловых потока), а в строке 18 происходит открытие несуществующего файла. При этом создаётся и открывается пустой файл. Проверить, так ли это, читатель должен самостоятельно.

Строки 20 и 21 в комментариях не нуждаются.