68918

Користувацькі функції

Лекция

Информатика, кибернетика и программирование

У будь-якій мові програмування існують підпрограми. У мові С вони називаються функціями, в асемблері — підпрограмами і викликаються інструкцією CALL, а в мові Pascal існує навіть два види підпрограм: процедури і функції.

Украинкский

2014-09-27

45 KB

0 чел.

Лекція № 11

Тема: Користувацькі функції

План

  1.  Користувацькі функції
  2.  Створення функцій

Що таке «призначені для користувача функції»

У будь-якій мові програмування існують підпрограми. У мові С вони називаються функціями, в асемблері — підпрограмами і викликаються інструкцією CALL, а в мові Pascal існує навіть два види підпрограм: процедури і функції.

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

Раніше ми розглядали стандартні функції, передбачені самою мовою PHP. Проте часто стандартні функції не вистачає і виникає необхідність створення своєї власної функції, що володіє необхідними якостями. Такі створювані самостійно функції і називаються призначеними для користувача. Про те, як їх створювати і використовувати, ми і дізнаємося в цьому розділі.

Особливості призначених для користувача функцій в РНР

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

Ви можете використовувати параметри, встановлені за умовчанням. Це, зокрема, дозволяє викликати одну і ту ж функцію із змінним числом параметрів.

Функція може повертати будь-який тип.

Область видимості змінних усередині функції, так само як і в інших мовах програмування, деревовидна.

Наявність інструкції return, як в мові С.

Можна змінювати змінні,  передані як аргумент (як параметр-змінна в Паскалі).

Мова РНР надає програмістові величезну свободу при створенні власних функцій. При програмуванні на інших мовах мені дуже не вистачало параметри за умовчанням, які дозволяють написати функцію з різним числом параметрів. У мові C++ з'явився механізм перезавантаження функцій, але параметри за умовчанням — це гнучкіший засіб. Адже в C++ для кожної переобтяженої функції нам потрібно наново писати її тіло. А в мові РНР цього робити не потрібно. У цьому розділі ми обов'язково розглянемо параметри за умовчанням.

Проте у PHP-функцій окрім переваг є і недоліки, причому істотні. Перший недолік пов'язаний з оголошенням локальній функції. У РНР ви не можете оголосити локальну функцію, як це можна робити в інших мовах. Тобто, ви не можете створити функцію усередині іншої функції так, щоб перша (вкладена) функція була видна тільки в другій функції. У РНР вкладена функція буде видна всій програмі, тобто, не буде локальної. Розглянемо наступний приклад:

<?

function first() { echo "First"; function Second() (

echo "Second"; } )

First () ; second ()

?>

Сценарій надрукує FirstSecond. Це означає, що нібито локальна функція доступна у всій програмі.

  Примітка. Зверніть увагу на імена функцій при оголошенні (first і Second) і при виклику (First і second). Це не друкарська помилка - РНР нечутливий до регістра імен функцій. Ви можете викликати функцію first(), FIRsT() або якось інакше.

Другий недолік пов'язаний з областю видимості функцій. Але спочатку небагато скажемо про глобальні і локальні змінні. Глобальні змінні — це змінні, які видно і доступно всій програмі зі всіма вхідними в неї підпрограмами(функціям). Локальні змінні, визначені усередині підпрограм, видно і доступно тільки усередині самої підпрограми(функції), в якій вони визначені.

Так от, в РНР всі оголошені і використовувані у функції змінні за умовчанням локальні для функції. Тобто, за умовчанням ви не можете змінити значення глобальної змінної в тілі функції як це можна зробити в інших мовах програмування. Якщо ви у функції використовуватимете змінну з ім'ям, ідентичним імені глобальної змінної, то це ніякого відношення до глобальної змінної мати не буде. Просто у функції буде створена локальна змінна з таким же ім'ям і за межами функції вона видна не буде.

Наступний приклад підтверджує даний факт:

$i   =   10;

function   change()    {

$i   =   5;

echo "i = $i<br>\n";

change () ;

echo "i = $i";

Сценарій спочатку надрукує 5, а потім — 10.

Проте, в РНР існує можливість позбавитися від цього недоліку. Для цього передбачено використання спеціальної інструкції global, яка дозволяє функції працювати з глобальними змінними. Докладніше про це ми говоритимемо в п. 8.6.

Створення призначених для користувача функцій

Функція може бути оголошена в будь-якій частині програми (в межах операторів <? і ?>), але до місця першого її використання. Іншими словами, не потрібно ніякого попереднього оголошення, як в інших мови програмування, зокрема, в С. Дойдя до визначення функції, транслятор перевірить коректність визначення і відтранслюватиме визначення функції у внутрішнє уявлення, але транслювати код він не стане. Даний підхід є найправильнішим — навіщо транслювати код, який, можливо, ніколи не використовуватиметься?

Для оголошення функцій використовується такий синтаксис:

function   Ім'я    (аргумент1[=значение1],...,аргумент1[=значение1])

{

тіло   функції

}

Оголошення функції починається службовим словом function, потім слідує ім'я функції, після імені — список аргументів в дужках. Тіло функції полягає у фігурні дужки і може містити довільне число операторів.

Вимоги до імен функцій:

Ім'я функції може містити російські букви, але давати функціям
російські імена із зрозумілих причин не рекомендується.

Ім'я функції не повинне містити пропусків і пробільних символів.

Ім'я повинне бути унікальним з точністю до регістра, тобто
функції F1() і fl() — це одна і та ж функція.

Функціям можна давати такі ж імена, як і змінним, тільки без знаку долара на початку імені.

Оскільки тип повертаного значення може бути будь-яким, його (тип) не указують зовсім. Для передачі результату роботи функції в основну програму використовується інструкція return. Якщо функція нічого не повертає, інструкцію return не указують. Інструкція return може повертати все, що завгодно, у тому числі і масиви.

Перша функція

Ми вже знаємо достатньо про функції, щоб написати власну функцію. Наприклад, наступна функція повертає масив з 10 випадкових чисел.

<?

function GetRand() {

$LocalArr = array();

mt_srand(time());

for($i=;$i<10;$i++) $LocalArr[] = mt_rand(0,100);

return $LocalArr;

}

$A = GetRand();

foreach($a as)

?>


 

А также другие работы, которые могут Вас заинтересовать

17833. АНАЛІТИЧНЕ ОЦІНЮВАННЯ ЕФЕКТИВНОСТІ ПІДПРИЄМНИЦЬКОЇ ДІЯЛЬНОСТІ 147 KB
  Лекція 5 АНАЛІТИЧНЕ ОЦІНЮВАННЯ ЕФЕКТИВНОСТІ ПІДПРИЄМНИЦЬКОЇ ДІЯЛЬНОСТІ 1 година Методичні поради до вивчення теми Оцінка результативності підприємницької діяльності є однією з основних функцій управління. Тому цю тему потрібно вважа
17834. Прекращение предпринимательской деятельности 54 KB
  Лекция 6 Прекращение предпринимательской деятельности 1 час План лекции: 1. Основания прекращения предпринимательской деятельности. 2. Формы прекращения предпринимательской деятельности. Реорганизация. Ликвидация. 1. Основания для...
17835. ОБЩАЯ ХАРАКТЕРИСТИКА ДОГОВОРОВ, ОПОСРЕДСТВУЮЩИХ ПРЕДПРИНИМАТЕЛЬСКУЮ ДЕЯТЕЛЬНОСТЬ. (КУПЛЯ-ПРОДАЖА, АРЕНДА (ЛИЗИНГ), ПОДРЯД, ПРЕДСТАВИТЕЛЬСКИЕ ДОГОВОРЫ) 57 KB
  Лекция 7 ОБЩАЯ ХАРАКТЕРИСТИКА ДОГОВОРОВ ОПОСРЕДСТВУЮЩИХ ПРЕДПРИНИМАТЕЛЬСКУЮ ДЕЯТЕЛЬНОСТЬ. КУПЛЯ-ПРОДАЖА АРЕНДА ЛИЗИНГ ПОДРЯД ПРЕДСТАВИТЕЛЬСКИЕ ДОГОВОРЫ 1. Понятие и виды договора опосредствующего предпринимательскую деят...
17836. УЧЕНИЕ О МЕСТНЫХ ФИНАНСАХ 176 KB
  ТЕМА 1. УЧЕНИЕ О МЕСТНЫХ ФИНАНСАХ План 1. Формирование науки о местных финансах 2. Сущность местных финансов и причины появления их 3. Местные финансы как система 1. Формирование науки о местных финансах Наука о местных финансах есть отдельной самостоятель
17837. МЕСТНЫЕ ФИНАНСЫ В ЭКОНОМИЧЕСКОЙ СИСТЕМЕ ГОСУДАРСТВА 121.5 KB
  Тема 2. МЕСТНЫЕ ФИНАНСЫ В ЭКОНОМИЧЕСКОЙ СИСТЕМЕ ГОСУДАРСТВА План 1. Функции местных финансов 2. Местные финансы как инструмент перераспределения ВВП 3. Местные финансы как фискальный инструмент 4. Местные финансы как инструмент финансирования общественных ...
17838. ОСНОВЫ ФИНАНСОВОЙ АВТОНОМИИ МЕСТНЫХ ОРГАНОВ ВЛАСТИ 51 KB
  Тема 3. ОСНОВЫ ФИНАНСОВОЙ АВТОНОМИИ МЕСТНЫХ ОРГАНОВ ВЛАСТИ План 1. Понятие финансовая автономия местных органов власти 2. Границы и количественные показатели финансовой автономии местных органов власти 3. Взаимосвязь местных и государственных финансов 1. По
17839. МЕЖДУНАРОДНЫЕ СТАНДАРТЫ ОРГАНИЗАЦИИ МЕСТНЫХ ФИНАНСОВ 62.5 KB
  Тема 4. МЕЖДУНАРОДНЫЕ СТАНДАРТЫ ОРГАНИЗАЦИИ МЕСТНЫХ ФИНАНСОВ 1. Европейская хартия о местном самоуправлении 2. Всемирная декларация местного самоуправления 3. Декларация о принципах местного самоуправления в странах СНГ 4. Европейская хартия городов и Европей...
17840. ИНСТИТУТ САМОСТОЯТЕЛЬНЫХ МЕСТНЫХ БЮДЖЕТОВ 115.5 KB
  Тема 5. ИНСТИТУТ САМОСТОЯТЕЛЬНЫХ МЕСТНЫХ БЮДЖЕТОВ План 1. Структура системы местных финансовых институтов 2. Понятие самостоятельности местного бюджета 3. Собственные доходы местных бюджетов 4. Закрепленные доходы местных бюджетов 5. Регулированные д
17841. ФОРМИРОВАНИЕ ВНЕБЮДЖЕТНЫХ, ВАЛЮТНЫХ И ДРУГИХ ЦЕЛЕВЫХ ФОНДОВ МЕСТНЫХ ОРГАНОВ ВЛАСТИ 73 KB
  Тема 6. ФОРМИРОВАНИЕ ВНЕБЮДЖЕТНЫХ ВАЛЮТНЫХ И ДРУГИХ ЦЕЛЕВЫХ ФОНДОВ МЕСТНЫХ ОРГАНОВ ВЛАСТИ План 1. Внебюджетные фонды 2. Валютные фонды 3. Резервные фонды Один из институтов в системе местных финансов это разнообразные внебюджетные фонды денежных ресурсов. Он...