ресурс для начинающих веб-разработчиков
комплексные веб-услуги по созданию сайтов

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб сайтов под "ключ".

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

Собственные функции. Параметры функции

Параметры функции

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

Функции, встроенные в РНР, позволяют взаимодействовать с файлами, использовать базы данных, создавать графические изображения и подключаться к другим серверам. Однако вам придется столкнуться со многими случаями, когда нужно выполнять действия, не предусмотренные создателями языка.

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

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

Базовая структура функции

Объявление функции создает, или объявляет, новую функцию. Объявление начинается с ключевого слова function, оно присваивает функции имя, задает необходимые параметры и содержит код, который выполняется при каждом вызове функции.

Объявление простейшей функции имеет следующий вид:

function my_function ()

{

echo 'Вызвана моя функция';

}

Это объявление функции начинается с ключевого слова function, которое сообщает программе синтаксического анализа РНР, что далее следует описание определяемой пользователем функции. В данном случае именем функции является my_function. Новую функцию можно вызвать с помощью следующего оператора:

my_function ();

Вызов этой функции приведет к отображению текста.

Встроенные функции доступны для всех РНР-сценариев, но если вы объявите свои собственные функции, то они доступны только для сценариев, в которых они объявлены. Имеет смысл завести отдельный файл и поместить в него все обычно используемые функции. Тогда в каждый из своих сценариев вы можете с помощью оператора require () получить доступ к этим функциям.

Внутри функции код, который выполняет требуемую задачу, заключается в фигурные скобки. Внутри скобок вы можете поместить любые конструкции, допустимые в РНР-сценарии, в том числе вызовы функций, объявление новых переменных или функций, операторы require () или include () и ввести обычный HTML-текст, это делается так же, как в любом другом месте сценария, т.е. устанавливается закрывающий РНР-дескриптор, за которым помещается HTML-текст. Ниже показан допустимый вариант ранее приведенного примера, который генерирует такой же вывод:

<?php

function my_function ()

{

?>

Вызвана моя функция

<?php

}

?>

Обратите внимание на то, что РНР-код заключен между соответствующими открывающим и закрывающим РНР-дескрипторами.

Именование функций

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

На имена функций накладываются следующие ограничения:

  • Функция не может иметь то же имя, что у существующей функции.
  • Имя функции может содержать только буквы, цыфры и символы подчеркивания.
  • Имя функции не может начинаться с цифры.

Многие языки программирования допускают многократное использование имен функций. Это свойство называется перегрузкой функций. РНР не поддерживает перегрузку функций, поэтому функция не может иметь имя, совпадающее с именем любой встроенной или существующей функции, определяемой пользователем. Имейте в виду, что хотя любой PHP-сценарий распознает все встроенные функции, определяемые пользователем функции существуют только в тех сценариях, в которых они объявлены. Это означает, что имя функции можно повторно использовать в другом файле, но это может приводить к путанице, поэтому подобных ситуаций следует избегать.

Следующие имена функций допустимы:

name ()
name2()
name_three()()
name four ()

А эти недопустимы:

5name()
name-six ()
fopen()

Последнее имя было бы допустимым, если бы оно уже не существовало.

Обратите внимание, что хотя $name не является допустимым именем функции, следующий вызов функции:

$name ()

может нормально работать, в зависимости от значения, хранящегося в $name. Причина состоит в том, что РНР берет значение переменной $name, ищет функцию с именем, совпадающим с этим значением, и пытается обратиться к ней. Данный тип функции носит название функции-переменной и часто весьма полезен.

Параметры

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

function create_table($data)
{
echo "<table border=1>" ;
reset($data); // Это используется для указания на начало
$value = current($data);
while ($value)
{
echo "<tr><td>$value</td></tr>\n" ;
$value = next($data);
}
echo "</table>";
}

Если вызвать функцию create_table () следующим образом:

<?php
function create_table($data)
{
echo "<table border=1>" ;
reset($data); // Это используется для указания на начало
$value = current($data);
while ($value)
{
echo "<tr><td>$value</td></tr>\n" ;
$value = next($data);
}
echo "</table>";
}
$my_array = array ('Строка 1', 'Строка 2', 'Строка 3');
create_table ($my_array);
?>

В окне веб-браузера это будет выглядеть ТАК.

Передача параметра позволяет передать в функцию данные, которые были созданы вне функции — в данном случае, массив $data.

Как и в случае встроенных функций, определяемые пользователем функции могут иметь несколько параметров и необязательные параметры. Функцию create_table() можно усовершенствовать многими способами, но одним из них могло бы быть предоставление пользователю возможности указывать рамку или другие атрибуты таблицы. Ниже приведена улучшенная версия функции. Она весьма подобна предыдущей, но позволяет при желании определять ширину рамки, расстояние между ячейками и способ заполнения ячеек.

function create_table1($data, $border = 1, $cellpadding = 4, $cellspacing = 4)
{
echo "<table border = $border cellpadding = $cellpadding cellspacing = $cellspacing>" ;
reset($data);
$value = current($data);
while ($value)
{
echo "<tr><td>$value</td></tr>\n" ;
$value = next($data);
}
echo "</table>";
}

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

create_table1 ($my_array);

В окне веб-браузера это будет выглядеть ТАК.

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

create_table1($my_array, 3, 8, 8);

В окне веб-браузера это будет выглядеть ТАК.

Необязательные параметры можно передавать не все — некоторые передать, а другие игнорировать. Параметры будут присваиваться слева направо.

Имейте в виду, что нельзя пропускать какой-либо необязательный параметр — требуется передать параметр, указанный в списке за ним. В данном примере, если требуется передать значение для cellspacing, придется передать также и значение для cellpadding. Это ограничение — причина распространенных ошибок программирования. В связи с этим же необязательные параметры указываются в конце любого списка параметров.

Следующий вызов функции:

create_table1 ($my_array, 3) ;

вполне допустим и приведет к тому, что значение переменной $border будет установлено равным 3, а значения переменных $cellpadding и $cellspacing будут установлены равными своим значениям по умолчанию.

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

Для примера рассмотрим следующую функцию:

function var_args ()
{
echo "Количество параметров: ";
echo func_num_args ();
echo "<br>";
$args = func_get_args ();
foreach ($args as $arg)
echo $arg. "<br>";
}

Эта функция выводит количество переданных ей параметров вместе с их значениями. Функция func_num_args () возвращает количество переданных аргументов, а функция func_get_args () — массив, содержащий эти аггументы. В качестве альтернативы можно получить доступ к каждому аргументу с помощью функции func_get_args (), передавая ей номер требуемого аргумента. (Нумерация аргументов начинается с нуля.)

Комментарии(0)

Для добавления комментариев надо войти в систему и авторизоваться
Комментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться