Смекни!
smekni.com

Создание динамических сайтов средствами Dreamweaver (стр. 3 из 9)

Приведем пример использования массивов $_POST и $_GET. Допустим, нам нужно обработать форму, содержащую элементы ввода с именами first_name, last_name, kurs. Данные были переданы методом POST, и данные, переданные другими методами, мы обрабатывать не хотим. Это можно сделать следующим образом:

<? php $str = "Здравствуйте, ". $_POST ["first_name"]." ". $_POST ["last_name"]. "! <br>";

$str. = "Вы выбрали для изучения курс по ".

$_POST ["kurs"];

echo $str;

? >

Тогда на экране браузера, если мы ввели имя "Иван", фамилию "Петров" и выбрали среди всех курсов курс по PHP, увидим сообщение:

Здравствуйте, Иван Петров! Вы выбрали для изучения курс по PHP

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

У каждой функции может быть, как мы уже говорили, список аргументов. С помощью этих аргументов в функцию передается различная информация (например, значение числа, факториал которого надо подсчитать). Каждый аргумент представляет собой переменную или константу. [10]

С помощью аргументов данные в функцию можно передавать тремя различными способами. Это передача аргументов по значению (используется по умолчанию), по ссылке и задание значения аргументов по умолчанию.

Когда аргумент передается в функцию по значению, изменение значения аргумента внутри функции не влияет на его значение вне функции. Чтобы позволить функции изменять ее аргументы, их нужно передавать по ссылке. Для этого в определении функции перед именем аргумента следует написать знак амперсанд "&". [18]

В РНР существует несколько встроенных функций: echo (), print (), date (), include. Все, кроме date (), являются языковыми конструкциями. Они входят в ядро PHP и не требуют никаких дополнительных настроек и модулей. Функция date () тоже входит в состав ядра PHP и не требует настроек. Но есть и функции, для работы с которыми нужно установить различные библиотеки и подключить соответствующий модуль. Например, для использования функций работы с базой данных MySql следует скомпилировать PHP с поддержкой этого расширения. В последнее время наиболее распространенные расширения и соответственно их функции изначально включают в состав PHP так, чтобы с ними можно работать без каких бы то ни было дополнительных настроек интерпретатора. [10]

8. Классы и объекты. Объект - это структурированная переменная, содержащая всю информацию о некотором физическом предмете или реализуемом в программе понятии, класс - это описание таких объектов и действий, которые можно с ними выполнять. [4]

Класс определяется с помощью следующего синтаксиса:

class Имя_класса{ var $имя_свойства;

/*список свойств*/ function имя_метода () { /* определение метода */ } /*список методов*/ }

Имя класса должно удовлетворять правилам именования объектов в языке PHP, но есть ряд имен, которые зарезервированы разработчиками для своих целей. В первую очередь это имена, начинающиеся с символа подчеркивания "_". Для создания классов и функций нельзя использовать такие имена. Кроме того, зарезервировано имя stdClass, поскольку оно используется внутри движка PHP.

Переменная нужного типа создается из класса с помощью оператора new. Создав объект, мы можем применять к нему все методы и получать все свойства, определенные в описании класса. Для этого используют такой синтаксис: $имя_объекта->название_свойства или $имя_объекта->название_метода (список аргументов). Перед названием свойства или метода знака $ не ставят.

<? php $art = new Articles;

// создаем объект $art echo ($art - >title);

// выводим название объекта $art $another_art = new Articles;

// создаем объект $another_art $another_art->show_article ();

// вызываем метод для отображения объекта в браузер ? >

Каждый из объектов класса имеет одни и те же свойства и методы. Так, у объекта $art и у объекта $another_art есть свойства title, description, author и методы Articles (), show_article (). Но это два разных объекта. Представим себе объект как директорию в файловой системе, а его характеристики - как файлы в этой директории. Очевидно, что в каждой директории могут находиться одинаковые файлы, но тем не менее они считаются различными, поскольку хранятся в разных директориях. Точно так же свойства и методы считаются различными, если они применяются к разным объектам. Чтобы получить нужный файл из директории верхнего уровня, мы пишем полный путь к этому файлу. При работе с классами нужно указывать полное имя функции, которую мы хотим вызвать. Директорией верхнего уровня в PHP будет пространство глобальных переменных, а путь указывается с помощью разделителя - >. Таким образом, имена $art->title и $another_art->title обозначают две разные переменные.

9. Работа с файлами. В PHP не существует функции, предназначенной именно для создания файлов. Большинство функций работают с уже существующими файлами в файловой системе сервера. Чтобы создать самый обычный файл, нужно воспользоваться функцией, которая открывает локальный или удаленный файл. Называется эта функция fopen (). Она связывает данный файл с потоком управления программы. Причем связывание бывает различным в зависимости от того, что мы хотим делать с этим файлом: читать его, записывать в него данные или делать и то и другое. [18] Синтаксис этой функции такой:

resource fopen (имя_файла, тип_доступа [, use_include_path])

В результате работы эта функция возвращает указатель (типа ресурс) на открытый ею файл. В качестве параметров этой функции передаются: имя файла, который нужно открыть, тип доступа к файлу (определяется тем, что мы собираемся делать с ним) и, возможно, параметр, определяющий, искать ли указанный файл в include_path.

Значения, принимаемые параметром тип_доступа:

r - открывает файл только для чтения; устанавливает указатель позиции в файле на начало файла.

r+ - открывает файл для чтения и записи; устанавливает указатель файла на его начало.

w - открывает файл только для записи; устанавливает указатель файла на его начало и усекает файл до нулевой длины. Если файл не существует, то пытается создать его.

w+ - открывает файл для чтения и записи; устанавливает указатель файла на его начало и усекает файл до нулевой длины. Если файл не существует, то пытается создать его.

a - открывает файл только для записи; устанавливает указатель файла в его конец. Если файл не существует, то пытается создать его.

a+ - открывает файл для чтения и записи; устанавливает указатель файла в его конец. Если файл не существует, то пытается создать его.

x - создает и открывает файл только для записи; помещает указатель файла на его начало. Если файл уже существует, то fopen () возвращает false и генерируется предупреждение. Если файл не существует, то делается попытка создать его. Этот тип доступа поддерживается начиная с версии PHP 4.3.2 и работает только с локальными файлами.

x+ - создает и открывает файл для чтения и записи; помещает указатель файла на его начало. Если файл уже существует, то fopen () возвращает false и генерируется предупреждение. Если файл не существует, то делается попытка создать его. Этот тип доступа поддерживается, начиная с версии PHP 4.3.2, и работает только с локальными файлами.

После выполнения необходимых действий с файлом, будь то чтение или запись данных или что-либо другое, соединение, установленное с этим файлом функцией fopen (), нужно закрыть. Для этого используют функцию fclose (). Синтаксис у нее следующий:

fclose (указатель на файл)

Для того, чтобы записать данные в файл, доступ к которому открыт функцией fopen (), можно использовать функцию fwrite (). Синтаксис у нее следующий:

int fwrite (указатель на файл, строка [, длина])

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

Пусть в нашей рабочей директории нет файла my_file.html. Создадим его и запишем в него строку текста:

<? php $h = fopen ("my_file.html","w");

$text = "Этот текст запишем в файл";

if (fwrite ($h,$text)) echo "Запись прошла успешно";

else echo "Произошла ошибка при записи данных";

fclose ($h);

? >

В результате работы этого скрипта в браузере мы увидим сообщение о том, что запись прошла успешно, а в файле my_file.html появится строка "Этот текст запишем в файл". Если бы этот файл существовал до того, как мы выполнили этот скрипт, все находящиеся в нем данные были бы удалены.

Если мы хотим прочитать данные из существующего файла, одной функции fopen () недостаточно. Она лишь возвращает указатель на открытый файл, но не считывает ни одной строки из этого файла. Поэтому для того, чтобы прочитать данные из файла, нужно воспользоваться одной из специальных функций: file, readfile, fread, fgets и т.п.

Функция fread осуществляет чтение данных из файла. Ее можно использовать и для чтения данных из бинарных файлов, не опасаясь их повреждения. Синтаксис fread ():

string fread (указатель на файл, длина)

В результате работы функция fread () возвращает строку со считанной из файла информацией.

С помощью функции fgets () можно считать из файла строку текста. Синтаксис этой функции практически такой же, как и у fread (), за исключением того, что длину считываемой строки указывать необязательно:

string fgets (указатель на файл [, длина])

В результате работы функция fgets () возвращает строку длиной (длина минус 1) байт из файла, на который указывает указатель на файл. Чтение заканчивается, если прочитано (длина минус 1) символов и встретился символ перевода строки или конец файла.

Функция readfile () считывает файл, имя которого передано ей в качестве параметра имя_файла, и выводит его содержимое на экран.

Синтаксис:

int readfile (имя_файла [, use_include_path])

Функция file () предназначена для считывания информации из файла в переменную типа массив. Синтаксис у нее такой же, как и у функции readfile (), за исключением того, что в результате работы она возвращает массив: