Пользовательские функции PHP
В любом языке программирования существуют подпрограммы. В языке C они называются функциями, в ассемблере - подпрограммами, а в Pascal существуют даже два вида подпрограмм: процедуры и функции.
Подпрограмма - это специальным образом оформленный фрагмент программы, к которому можно обратиться из любого места внутри программы. Подпрограммы существенно упрощают жизнь программистам, улучшая читабельность исходного кода, а также сокращая его, поскольку отдельные фрагменты кода не нужно писать несколько раз
В PHP такими подпрограммами являются пользовательские функции.
Помимо встроенных функций PHP, часто возникает необходимость создания пользовательских функций, выполняющих определенные задачи.
Особенности пользовательских функций PHP Доступны параметры по умолчанию. Есть возможность вызывать одну и ту же функцию с переменным числом параметров;
Есть возможность изменять переменные, переданные в качестве аргумента.
В PHP программисту дана достаточно высокая свобода при создании пользовательских функций. В отличии от языка C++ в пользовательских функциях доступны параметры по умолчанию.
1.
Невозможность объявления локальных функций. В PHP вы не можете объявить локальную функцию, как это можно сделать в других языках программирования. Попросту говоря, вы не можете создать функцию внутри другой функции таким образом, чтобы первая (вложенная) функция была видна только во второй функции. В PHP вложенная функция будет доступна всей программе (скрипту), а значит не будет локальной.
<?php
?>
Первая пользовательская функция Вторая пользовательская функция Значит, обе функции доступны программе. Это говорит о том, что вторая функция не является локальной.
2.
Второй недостаток пользовательских функций PHP связан с областью видимости функций. Чтобы разобраться в этой категории, необходимо пояснить, какие переменные являются глобальными, а какие - локальными.
Глобальные переменные - это переменные, которые доступны всей программе, включая подпрограммы (функции).
Локальные переменные - переменные, определенные внутри подпрограммы (функции). Они доступны только внутри функции, в которой они определены.
Для PHP все объявленные и используемые в функции переменные по умолчанию локальны для функции. То есть, по умолчанию нет возможности изменить значение глобальной переменной в теле функции.
Если вы в теле пользовательской функции будете использовать переменную с именем, идентичным имени глобальной переменной (находящейся вне пользовательской функции), то никакого к отношения глобальной переменной эта локальный переменная иметь не будет. В данной ситуации в пользовательской функции будет создана локальная переменная с именем, идентичным имени глобальной переменной, но доступна данная локальная переменная будет только внутри этой пользовательской функции.
<?php
?>
Сценарий выведет сперва 70, а затем 100:
70 100 Для избавления от приведенного недостатка, в PHP существует специальная инструкция
global , позволяющая пользовательской функции работать с глобальными переменными. Подробнее об этом можете узнать
Создание пользовательских функций Пользовательская функция может быть объявлена в любой части программы (скрипта), до места ее первого использования. И не нужно никакого предварительного объявления, как в других языках программирования, в частности, в C. Преимущества применяемого в PHP подхода в следующем.
Дойдя до определения пользовательской функции, транслятор проверит корректность определения и выполнит трансляцию определения функции во внутреннее представление, но транслировать сам код он не будет. И это правильно - зачем транслировать код, который, возможно, вообще не будет использован. Синтаксис объявления функций следующий:
function Имя (аргумент1[=значение1],...,аргумент1[=значение1])
Объявление функции начинается служебным словом function , затем следует имя функции, после имени функции - список аргументов в скобках. Тело функции заключается в фигурные скобки и может содержать любое колличество операторов.
Требования, предъявляемые к именам функций:
Имена функций могут содержать русские буквы, но давать функциям имена, состоящие из русских букв не рекоммендуется;
Имя каждой пользовательской функции должно быть уникальным. При этом, необходимо помнить, что регистр при объявлении функций и обращении к ним не учитывается. То есть, например, функции funct() и FUNCT() имеют одинаковые имена;
Функциям можно давать такие же имена, как и переменным, только без знака $ в начале имен.
Типы значений, возвращаемые пользовательскими функциями, могут быть любыми. Для передачи результата работы пользовательских функций в основную программу (скрипт) используется конструкция
. Если функция ничего не возвращает, конструкцию
return не указывают. Конструкция
return может возвращать все, что угодно, в том числе и массивы.
<?php
?>
В рассмотренном примере функция funct возвращает с помощью конструкции return число 777. Возвращенное функцией значение присваивается глобальной переменной
$a , а затем оператор echo выводит значение переменной
$a в браузер. В результате мы увидим в браузере число 777.
Далее мы рассмотрим возможности PHP по передаче параметров пользовательских функций.
Рубрики: Без рубрики |

