- •Лабораторная работа №4
 - •4.4. Теоретические сведения
 - •Общие сведения о языке php
 - •Работа в редакторе Zend Studio
 - •4.4.3. Переменные и типы данных php
 - •4.4.3.1.Переменные
 - •4.4.3.2.Глобальные переменные
 - •4.4.3.3.Статические переменные
 - •4.4.3.4.Константы
 - •4.4.3.5.Типы данных
 - •4.4.3.6.Преобразование типов
 - •4.4.4.Массивы
 - •4.4.5. Операторы
 - •4.4.5.1. Математические операторы
 - •4.4.5.2. Операторы присваивания
 - •4.4.5.3. Строковые операторы
 - •4.4.5.4. Операторы инкремента и декремента
 - •4.4.5.5. Логические операторы
 - •4.4.5.6. Операторы равенства
 - •4.4.5.7. Операторы сравнения
 - •4.4.6. Конструкции языка
 - •4.4.6.1. Проверка условий
 - •4.4.6.2. Цикл с предусловием While
 - •4.4.6.3. Цикл с постусловием do-while
 - •4.4.6.4. Цикл For
 - •4.4.6.5. Инструкции break и continue
 - •4.4.6.7. Конструкция switch-case
 - •4.4.7. Функции
 - •4.4.7.1. Определение и вызов функций
 - •4.4.7.2. Возврат значения из функции
 - •4.4.7.3. Рекурсивные функции
 - •4.4.7.4. Функции-переменные
 - •4.4.8. Файловый ввод/вывод и файловая система
 - •4.4.8.1. Проверка существования и размера файла
 - •4.4.8.2. Открытие и закрытие файлов
 - •4.4.8.3.Запись в файл
 - •4.4.8.4. Чтение из файла
 - •4.5. Пример разработки программы на php
 - •4.6. Указания по организации самостоятельной работы студентов
 - •4.7. Контрольные вопросы
 
4.4.7.4. Функции-переменные
Одной из интересных возможностей PHP является функйии-переменные, то есть динамические вызовы функций, имена которых определяются во время выполнения программы. Хотя в большенстве web-приложений можно обойтись и без функций-переменных, они значительно сокращают объём и сложность програмного кода, а также часто снимают необходимость в условных командах if.
Вызов функции-переменной представляет собой имя переменной, за которым следует пара круглых скобок. В круглых скобках могут перечисляться параметры (хотя присутствие параметров не обязательно).
Обобщенный синтаксис вызова функции-переменной: $Имя_функции();
Следующая программа, демонстрирует эту непривычную, но полезную возможность. Допустим программа выводит разную информацию в зависимости от языка, выбранного пользователем:
<?
// Приветствие на итальянском языке
function italian() {
echo "Benvenuti to PHP Recipes"; }
// Приветствие на русском языке
function english() {
echo "Welcome to PHP Recipes"; }
// Выбрать английский язык
$language='english';
// Выполнить функцию-переменную
$language();
?>
	
Рис. 20 Результат работы программы с функцией-переменной
Программа демонстрирует интересную концепцию функций-переменных и наглядно показывает, что функции переменные способствуют уменьшению объёма програмного кода. Если бы не эта возможность, функцию пришлось бы выбирать командой if или switch; это привело бы к заметному увеличению объёма програмного кода и риску появления дополнительных ошибок при кодировании.
4.4.8. Файловый ввод/вывод и файловая система
4.4.8.1. Проверка существования и размера файла
Прежде чем пытаться работать с файлом, желательно убедиться в том, что он существует. Для решения этой задачи обычно используются две функции:
file_exists( ) и is_file( ).
Функция f ilе_ехists ( ) проверяет, существует ли заданный файл. Если файл существует, функция возвращает TRUE, в противном случае возвращается FALSE. Синтаксис функции file_exists( ):
bool file_exists(string файл)
Пример проверки существования файла:
if (! file_exists ($filename)) :
echo "File $filename does not exist!";
endif:
Функция is_file( ) проверяет существование заданного файла и возможность выполнения с ним операций чтения/записи. В сущности, is_file( ) представляет собой более надежную версию file_exists( ), которая проверяет не только факт существования файла, но и то, поддерживает ли он чтение и запись данных:
bool is_file(string файл)
Следующий пример показывает, как убедиться в существовании файла и возможности выполнения операций с ним:
<?
$file = "somefile.txt";
if (is_file($file)) :
echo "The file $file is valid and exists!";
else :
echo "The file $file does not exist or it is not a valid file!";
endif:
?>
	
Рис. 21. Результат работы программы на проверку существования файла
Функция filesize( ) возвращает размер (в байтах) файла с заданным именем или FALSE в случае ошибки. Синтаксис функции filesize( ):
int filesize(string имя_файла)
Если необходимо определить размер файла pastry.txt. Для получения нужной информации можно воспользоваться функцией filesize( ):
$fs = filesize("pastry.txt"); echo "Pastry.txt is $fs bytes.";
Выводится следующий результат:
Pastry.txt is 179 bytes.
Прежде чем выполнять операции с файлом, необходимо открыть его и связать с файловым манипулятором, а после завершения работы с файлом его следует закрыть. Эти темы рассматриваются в следующем разделе.
