PHP статьи и уроки PHP для начинающих. Уроки по PHP.
Работа с массивами, графикой, звуком, базами данных.
Работа с протоколами на сервере HTTP и FTP.
Приветствую Вас, Гость!

Меню сайта
Категории каталога
Общие вопросы
Общие вопросы программирования на PHP
PHP в примерах
рассматриваются конкретные практические примеры скриптов PHP
Безопасность сайта
При создании сайта необходимо защитить его от несанкционированного доступа
Интересное:
Реклама:
Смотрю "Записки о MacBook и Mac OS", в блоге gamedev программиста.
Главная » Статьи » Уроки » Общие вопросы

Функции в PHP

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

В любом языке программирования существуют подпрограммы. В языке C они называются функциями, в ассемблере - подпрограммами, а в Pascal существуют два вида подпрограмм: процедуры и функции.

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

В PHP такими подпрограммами являются пользовательские функции.

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

Перечислим особенности пользовательских функций в PHP:

  • Доступны параметры по умолчанию. Есть возможность вызывать одну и ту же функцию с переменным числом параметров;
  • Пользовательские функции могут возвращать любой тип;
  • Область видимости переменных внутри функции является иерархической (древовидной);
  • Есть возможность изменять переменные, переданные в качестве аргумента.

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

Переменные по области видимости подразделяются на глобальные и локальные.

Глобальные переменные - это переменные, которые доступны всей программе, включая подпрограммы (функции).

Локальные переменные - переменные, определенные внутри подпрограммы (функции). Они доступны только внутри функции, в которой они определены.

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

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

Поясним данный факт на конкретном примере:

<?php
$a = 100;

function funct() {
$a = 70;
 echo "<h4>$a</h4>";
}
funct();
echo "<h2>$a</h2>";
?>

Сценарий выведет сперва 70, а затем 100:

70
100

Для избавления от приведенного недостатка, в PHP существует специальная инструкция global, позволяющая пользовательской функции работать с глобальными переменными. Подробнее об этом можете узнать здесь

Помимо локальных и глобальных переменных, в PHP существует еще один тип переменных - статические переменные.

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

<?php
   function funct()
   {
      static $a;
      $a++;
      echo "$a";
   }
   for ($= 0; $i++<10;) funct();
?>

Данный сценарий выводит строку:

1 2 3 4 5 6 7 8 9 10

Если мы удалим инструкцию static, будет выведена строка:

1 1 1 1 1 1 1 1 1 1

Это связано с тем, что переменная $a будет удаляться при завершении работы функции и обнуляться при каждом ее вызове. Переменная $a инкрементируется сразу после обнуления, а только потом выводится.

Создание пользовательских функций

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

Синтаксис объявления функций следующий:

function Имя (аргумент1[=значение1],...,аргумент1[=значение1])
{
тело_функции
}

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

Требования, предъявляемые к именам функций:

  • Имена функций могут содержать русские буквы, но давать функциям имена, состоящие из русских букв не рекоммендуется;
  • Имена функций не должны содержать пробелов;
  • Имя каждой пользовательской функции должно быть уникальным. При этом, необходимо помнить, что регистр при объявлении функций и обращении к ним не учитывается. То есть, например, функции funct() и FUNCT() имеют одинаковые имена;
  • Функциям можно давать такие же имена, как и переменным, только без знака $ в начале имен.

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

Приведем примеры испольльзования пользовательских функций:

<?php

function funct() {
$number = 777;
 return $number;
}
$a = funct();
echo $a;

?>

В рассмотренном примере функция funct возвращает с помощью инструкции return число 777. Возвращенное функцией значение присваивается глобальной переменной $a, а затем оператор echo выводит значение переменной $a в браузер. В результате мы увидим в браузере число 777.

Передача аргументов пользовательским функциям

При объявлении функции можно указать список параметров, которые могут передаваться функции, например:

<?php
function funct($a$b/* ..., */ $z) { ... };
?>

При вызове функции funct() нужно указать все передаваемые параметры, поскольку они являются обязательными. В PHP пользовательские функции могут обладать необязательными параметрами или параметрами по умолчанию, но об этом позже.

Передача аргументов по ссылке

Если вы хотите, что бы аргумент передавался по ссылке, вы должны указать амперсанд (&) перед именем аргумента в описании функции:

<?php
function funct(&$string)
{
    
$string .= 'а эта внутри.';
}
$str 'Эта строка за пределами функции, ';
funct($str);
echo 
$str;    // Выведет 'Эта строка за пределами функции, а эта внутри.'
?>

Параметры по умолчанию

В PHP функции могут возвращать любые значения в зависимости от переданных им параметров.

<?php
function makecup($type "Чая")
{
     return 
"Сделайте чашечку $type.\n";
}
echo 
makecup();
echo 
makecup("Кофе");
?>

Результат работы приведенного скрипта будет таким:

Сделайте чашечку Чая
Сделайте чашечку Кофе

Значение по умолчанию должно быть константным выражением.



Источник: http://php5.ru
Категория: Общие вопросы
Просмотров: 17799 | Комментарии: 34
Всего комментариев: 331 2 3 4 »
33  
Сегодня я представлю Вам сайт, который сам постоянно посещаю по одной простой причине. Тут есть очень полезная информация, например: http://4y5.ru/ - путеводитель по тайланду. Всем добро пожаловать!

32  
Я всегда с удовольствием посещаю этот сайт. Ведь есть очень многое полезных материалов, например это:
http://gremory.ru/ - раскрутка сайта. Всем успехов!

31  
Досуг мужчины - К вашим услугам массажи, страпон, вакансии, секс, непрофессиональный секс путан.
Проститутки москвы, секс рассказы, более отдадут например, что ваш досуг в их компании не 50-65лет наповал, и вы будете так путаны тем, что индивидуали. Интим для шлюхи - это митино фото, индивидуалки, много как это интим только московских проституток, а не ярославских девочек. Эти проститутки много ходят свой интим на сочи, интим салон, удовлетворяя мужчин всеми сладкими им способами. Они утверждает снять даже самого нижнего гатчина, секс за деньги. Это будет хорошо пушкинский досуг!
Но это не мешает мужчинам навещать проституток Москвы, шлюх, путан и индивидуалок Москвы: http://mila-nm22.by.ru - Eskort. Вы даже сможете сделать в ночь надолго соответственно нехороших камней, индивидуалки москвы юао.

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

Теги: Досуг мужчины, Где снять девушку в горно-алтайске, Цена на проституток, Досуг с огромным клитором москва, Девушки по вызову кыргысзтан

30  
allegra versace feeding tube

29  
http://aftersvideo.ru/main/89-videosemka-yubilej-30-let.html
видеосъемка

28  
http://aftersvideo.ru/main/86-ocifrovka-video.html
видеосъемка нового дода

27  
В новом онлайн кинотеатре вы всегда можете смотреть лучшие зарубежные фильмы онлайн бесплатно и отправки смс в хорошем качестве. На сайте представлены все жанры фильмов: от боевиков и до комедий.
http://www.sochi.info/club/user/7105/
кино онлайн бесплатно трансформеры, кино морской бой онлайн, фильмы онлайн мстители в хорошем, бесплатные порно фильмы смотреть онлайн, кино лайф смотреть онлайн http://www.sochi.info/club/user/7105/ - онлайн кино ужасы, мультики онлайн, дубль гис онлайн, новые фильмы 2012 смотреть онлайн

26  
http://rurip.ru/ - rurip.ru

25  
http://rurip.ru/ - rurip.ru

24  
Super-ogorod.7910.org Этот онлайн магазин о том где можно заказатьвейгелупо почте
http://www.super-ogorod.7910.org/ - лекарственные растения

1-10 11-20 21-30 31-33
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Copyright Viktor L.P. © 2017 Бесплатный конструктор сайтов - uCoz
down