Главная страница
Навигация по странице:

  • Особенности пользовательских функций PHP

  • Первая пользовательская функция Вторая пользовательская функция

  • Функции. Пользовательские функции в PHP. Пользовательские функции в php


    Скачать 18.85 Kb.
    НазваниеПользовательские функции в php
    АнкорФункции
    Дата09.02.2022
    Размер18.85 Kb.
    Формат файлаdocx
    Имя файлаПользовательские функции в PHP.docx
    ТипПрограмма
    #355895

    Пользовательские функции в 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.


    написать администратору сайта