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