Ваш первый Сайт С использованием РНР-скриптов
СОЗДАНИЕ ФУНКЦИЙ В РНР
В РНР можно создавать функции-подпрограммы, которые можно вызывать по своим именам, при необходимости передавая им определенную информацию. Необходимы они в том случае, когда один и тот же код нужно выполнять несколько раз для разных данных, особенно если требуемое количество выполнений заранее неизвестно. Создать функцию на РНР можно, вставив в программу инструкцию, начинающуюся с ключевого слова Function:
Function Имя (переменные, в которые записываются передаваемые параметры, и их тип) {...команды функции... },
А вызвать - простым указанием имени этой функции и параметров.
Помните, что переменные, созданные в функции, по умолчанию имеют установленное значение только внутри функции. Кроме того, также по умолчанию переменные, объявленные вне функции, в ней самой никакого значения не имеют.
Давайте для примера создадим функцию для считывания CSV-файлов, причем функция будет в виде отдельной программы. Создайте в РНР-редакторе новый файл, назовите его func.php и сохраните его в подпапке gostevaja, Там же, где вы сохранили прошлый файл csv.php. Наберите код, как в листинге 7.1.
Листинг 7.1 (файл Func.Php) <?Php
//чтение массива из файла
Function read($cfile, $razd="|") {
Строганов А. С. Ваш первый сайт с использованием РНР-скриптов $Open=Fopen($Cfile, "а+");
While(($dan=fgetcsv($open, 2048, $razd)) !=false) {
$recl|=$dan;
}
Return $rec; }
?>
Код похож на тот, который мы рассматривали в п. 7.1 с той разницей, что этот код мы делаем в виде отдельной функции. Разберем строчки кода: Function read($cfde, $razd="") ~ после ключевого слова function пишем имя функции read. Имя может быть любым. В качестве параметров функции вводим две произвольные переменные. Первая переменная пока не задана, а вторая задана по умолчанию «|». Это значит, что при использовании данной функции, если мы не укажем второй ее аргумент, по умолчанию он примет значение «|»;
Ц - далее обязательно следует открывающаяся фигурная скобка. Весь код функции заключается в фигурные скобки;
$open=fopen($cfde, "а+"); - открываем файл, указанный в переменной $cfde, Т. е. в переменной, которую мы указали в качестве первого аргумента нашей функции read. Этот аргумент будет определен после;
Whi!e(($dan=fgetcsv($open, 2048, $razd')) !==falsej - считываем текстовый файл при помощи встроенной функции fgetcsv и создаем двумерный массив $гес (см. программу в п. 7.1); 2{
$rec[]=$dan; 2}
Return $rec; - важная команда. Перед тем как поставить закрывающуюся фигурную скобку, означающую конец действия функции, при помощи ключевого слова return мы даем указание, что конкретно должна возвратить функция Read при ее вызове. В нашем случае эта функция возвратит массив $гес
1} - конец действия функции.
Теперь сохраните и запустите эту программу. Что-нибудь видно? Правильно, ничего. Мы просто написали функцию read, но еще не вызвали ее и не дали ей аргументов. Переменная $cfde еще не определена.
Откройте созданный нами предыдущий файл csv.php. Удалите между тегами <?php и?> весь код и вставьте новый:
Include "func. php"; $m=read("CSVfde. txt" ""); print_r($m);
Первым делом, при помощи оператора include вставляем на эту страницу код созданной нами функции, который у нас в файле func.php. Далее вызываем эту функцию, которую мы тогда назвали read и передаем ей два аргумента. Таким образом, в коде функции func.php первому аргументу, переменной Scfile, присваивается значение CSVfile.txt, а второму аргументу, переменной $razd, значение «|». Второй аргумент при вызове функции read можно было и не указывать, так как его значение «|» может быть использовано по умолчанию. Функция read возвращает нам двумерный массив. Его-то мы и сохраняем в переменной $т. Затем выводим этот массив в окно браузера. Если бы мы в последней строке написали: print_r($rec), т. е. пытались бы вывести значение переменной, заданной нами непосредственно в функции на странице func.php, то у нас бы ничего не получилось. Как уже было отмечено выше, переменные, созданные в функции, имеют установленное значение только внутри функции, т. е. вне функции read переменная $гес не определена.